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メソッドで行きたい場合は、クエリセットを次のように設定できます

    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 に答える