2010-07-13 44 views
1

說我有2類爲:Queryset返回多種多樣關係的modelinstances?

class Bar(models.Model): 
    prop = IntegerField() 

class Foo(models.Model): 
    bar = ManyToManyField(Bar) 

我想返回一個包含酒吧的模型實例一個QuerySet是 匹配查詢:

QuerySetOfFoos.objects.filter(bar__prop__gt=0) 

是否有一個簡單的方法來做到這一點?我知道,在模型實例我 可以做foo.bar_set但不知道如何做到這一點在所有 原始查詢集的...

回答

0

如果你想得到一個酒吧的查詢集,你需要從酒吧經理開始,即Bar.objects。這將工作:

Bar.objects.filter(foo__in=QuerySetOfFoos, prop__gt=0) 

理想情況下,你應該簡單地包括任何參數,用來獲取QuerySetOfFoos在您的查詢。例如,如果你的Foo有「集團」和「等級」字段,以及所有你想要棒材FOOS與小組「成員」和等級> 10,你會怎麼做:

Bar.objects.filter(foo__group='members', foo__rank__gt=10, prop__gt=0) 
+0

這正是我所尋找的,m2m__in,以及只是回憶起你可以從兩個方向思考偶爾出現的偶然事件。 – 2010-07-13 13:36:20

0

你的意思是這樣的:

Bar.objects.filter(foo__bar__prop__gt = 0) 

+0

不太,因爲這將是從所有酒吧,而不僅僅是那些在查詢集「QuerySetOfFoos」中的M2M酒吧,但這是一個方便的事情要知道! – 2010-07-13 13:34:59