【发布时间】:2021-08-04 11:16:07
【问题描述】:
在 Django 中,如果我有两个模型 Question 和 Choice 具有一对多关系,我如何过滤 Question 对象的 Manager 以创建仅包含具有一个或多个 Choices 的 QuerySet?
当前代码如下,它指的是根据特定条件显示问题列表的视图:
class IndexView(generic.ListView):
template_name = 'polls/index.html'
context_object_name = 'latest_question_list'
def get_queryset(self):
return Question.objects.filter(
pub_date__lte=timezone.now()
).order_by('-pub_date')[:5]
视图显示最近的五个问题,它们的 pub_date 字段不在未来时间。我知道我可以通过以下方式访问我需要的值:
questions = Question.objects.filter(pub_date__lte=timezone.now()
for q in questions:
number_of_choices = q.choice_set.count()
但我需要 get_queryset 方法在访问choice_set 时返回一个QuerySet 需要执行查询并从结果中提取问题。
那么,如何根据其choice_set 属性过滤该QuerySet?
(这是Django网站上教程第5部分的“更多测试的想法”部分提出的挑战)
【问题讨论】:
标签: django django-models