这两段代码在第一眼看起来是相同的:
class IndexView(generic.ListView):
template_name = 'polls/index.html'
context_object_name = 'latest_poll_list'
queryset = Poll.active.order_by('-pub_date')[:5]
和
class IndexView(generic.ListView):
template_name = 'polls/index.html'
context_object_name = 'latest_poll_list'
def get_queryset(self):
return Poll.active.order_by('-pub_date')[:5]
它们之间有什么区别吗?如果有:
哪种方法更好?或者在设置queryset
变量比覆盖get_queryset
方法更好?反之亦然。
get_queryset
方法中使用self.model.objects.filter(...)
。如果继承自己的列表视图,则应该记住要引用super(YourListViewExtendingSomeOtherLV, self).get_queryset().filter(...)
。 - andilabs