Django过滤相关对象

时间:2015-08-13 12:28:55

标签: python django

在3方式关系模型中(让我们说Poll-> Questions-> Choices)我试图只显示至少有一个问题至少有2个选项的民意调查。 如果民意调查有50个问题且所有这些问题都有0或1个选择,则不应显示此民意调查。

到目前为止我所拥有的:

polls = Poll.objects.annotate(
    num_questions=Count('question')).filter(
    num_questions__gt=0)

这正确地让我得到了有问题的民意调查。但有些人甚至没有选择,或者不到两个,所以我不想看到这些民意调查。

到目前为止我尝试了什么:

polls = Poll.objects.annotate(
        num_questions=Count('question')).filter(
        num_questions__gt=0).filter(
        question__choice_set__gte=1)

这会打印"Relation fields do not support nested lookups"

polls = Poll.objects.annotate(
    num_questions=Count('question')).filter(
    num_questions__gt=0).annotate(
    num_choices=Count('choice_set')).filter(
    num_choices__gt=1)

并打印:Cannot resolve keyword 'choice_set' into field. Choices are: id, num_questions, poll_enabled, poll_skippable, poll_title, question

现在我有点想法了。如果有人必须这样做或者只是知道该怎么做,我很乐意接受任何帮助。

0 个答案:

没有答案