2

现在我有以下代码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')

这有助于从数据库中获取只有活跃的问题。

但我不知道如何正确使用通用 ListView的.

任何建议将不胜感激。

4

1 回答 1

3

modelManager可以将上的查询ListView集设置为:

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()
于 2013-10-31T12:12:14.437 回答