Queryset, возвращающий модельные экземпляры многих отношений? - PullRequest
1 голос
/ 13 июля 2010

Скажем, у меня есть 2 класса:

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

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

Я хочу вернуть QuerySet, содержащий экземпляры модели, соответствующие запросу:

QuerySetOfFoos.objects.filter(bar__prop__gt=0)

Есть ли простой способсделай это?Я знаю, что в экземпляре модели я мог бы сделать foo.bar_set, но не уверен, как это сделать для всего исходного QuerySet ...

Ответы [ 2 ]

0 голосов
/ 13 июля 2010

Если вы хотите получить QuerySet of Bars, вам нужно начать с менеджера Bar, то есть Bar.objects. Это будет работать:

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

В идеале вы должны просто включить все параметры, которые использовались для получения QuerySetOfFoos, в ваш запрос. Например, если у ваших Foos есть поля «group» и «rank», и вы хотите, чтобы все «Bars for Foos» имели группу «members» и ранг> 10, вы должны сделать:

Bar.objects.filter(foo__group='members', foo__rank__gt=10, prop__gt=0)
0 голосов
/ 13 июля 2010

Вы имеете в виду что-то вроде этого:

Bar.objects.filter(foo__bar__prop__gt = 0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...