2016-10-07 26 views
0

選擇我有3個Django模型:Django的從相關模型

class Property(object): 
    name = ... 
class Object(object): 
    text = ... 
    data_related = models.ManyToManyField('Property',related_name='property_related', through="ObjectProperty") 

class ObjectProperty(object): 
    extra_data = ... 

我需要選擇具有在同一時間至少2個屬性的對象。 我該怎麼做?

例如,Object = [燈,餐桌,汽車,筆,...] 屬性= [圓形,紅色,白色,不可見的,軟,...] 我想找到白色圓形和柔和的對象。

我倒要做到這一點,在1個查詢集

回答

0

請嘗試使用此:

from django.db.models.aggregates import Count 

_objects = Object.objects.filter(
    data_related__name__in=['round', 'soft']).annotate(
    count_objects=Count('id')).filter(count_objects__gt=1) 
+0

您的查詢是指對象具有軟或白色的財產,但我想它有他們兩個 – maxx

+0

我明白你的意思。我更新了我的答案。 –