Queryset返回很多关系的模型实例?

时间:2010-07-13 02:35:07

标签: django

说我有两个班:

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

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

我想返回一个包含bar的模型实例的QuerySet 匹配查询:

QuerySetOfFoos.objects.filter(bar__prop__gt=0)

有一种简单的方法吗?我知道在模型实例中我 可以做foo.bar_set,但不知道怎么做全部 原始QuerySet ...

2 个答案:

答案 0 :(得分:0)

你的意思是这样的:

Bar.objects.filter(foo__bar__prop__gt = 0)

答案 1 :(得分:0)

如果要获取Bars的QuerySet,则需要从Bar管理器开始,即Bar.objects。这将有效:

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

理想情况下,您应该只包含用于在查询中获取QuerySetOfFoos的任何参数。例如,如果您的Foos具有“组”和“排名”字段,并且您希望所有条形图“成员”和排名> 10,你会这样做:

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