我有这两个模型:
class Questions(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question,on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
并且在views.py中我想返回最后5个有选择的问题。换句话说,没有任何选择的问题不会返回。 我的观点:
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]
我应该在return语句中应用哪些更改?
抱歉我的英语不好。谢谢
答案 0 :(得分:1)
return Question.objects.filter(question_set__isnull=False, pub_date__lte=timezone.now()).order_by('-pub_date')[:5]
答案 1 :(得分:1)
重新编写get_queryset()
,如下所示,
def get_queryset(self):
return Question.objects.filter(question__isnull=False,pub_date__lte=timezone.now()).order_by('-pub_date')[:5]
答案 2 :(得分:0)
Choice.question_set.filter(pub_date__lte=timezone.now()).order_by('-pub_date')[:5]
这会向后使用以下外键关系,如Django docs here中所述。
Choice.question_set.all()
用于通过跟踪Question
后面的关系来获取所有可以选择的Choice
个对象。