使用通用ListView和分页。 Django的

时间:2013-10-31 11:57:34

标签: django django-views django-pagination

现在我在views.py中有以下代码:

class IndexView(generic.ListView):
    model = Question
    template_name = "qa_forum/index.html"
    context_object_name = 'question_list'
    paginate_by = 25

它的工作很好,但它检索数据库中的所有问题(包括封闭和“未来”问题)。

models.py我有以下经理:

class ActiveManager(models.Manager):
    def get_query_set(self):
        return super(ActiveManager, self).get_query_set(). \
                .filter(pub_date__lte=timezone.now(), is_active=True
                ).order_by('-pub_date')

这有助于从db获取活动问题。

但我不知道如何正确使用 generic ListView

非常感谢任何建议。

1 个答案:

答案 0 :(得分:3)

您可以将queryset on the ListView class设置为:

,而不是实施modelManager
class IndexView(generic.ListView):
    model = Question
    template_name = "qa_forum/index.html"
    context_object_name = 'question_list'
    paginate_by = 25
    queryset = Question.objects.filter(pub_date__lte=timezone.now(), 
                                       is_active=True).order_by('-pub_date')

如果您想使用modelManager方法,可以将queryset设置为

    class IndexView(generic.ListView):
        #if you have set manger as active_objects in Question model
        queryset = Question.active_objects.filter()