私はいつもdjangoでget_queryset()が冗長かどうか疑問に思っています。私たちが知っているように、get_queryset()はオブジェクトのリストをページに返しますが、このオブジェクトのリストを返すために、get_context_data()でいつでも指定することができ、get_context_data()はリスト。次のように例を見ることができます。get_context_data()があるので、django get_queryset()は冗長ですか?
戻りget_querysetによって子どもの本のリスト()
from django.views.generic import ListView
from books.models import Book
class ChildrenBook(ListView):
model = Book
def get_queryset(self, *args, **kwargs):
qset = super(BookListView, self).get_queryset(*args, **kwargs)
return qset.filter(type="children")
戻りget_context_dataによって子どもの本(のリスト)
from django.views.generic import ListView
from books.models import Book
class ChildrenBook(ListView):
model = Book
def get_context_data(self, **kwargs):
context = super(PublisherDetail, self).get_context_data(**kwargs)
context['children_book_list'] = Book.objects.filter(type="children")
return context
私の知る限りでは、get_queryset()ができることは何も見つかりませんが、 get_context_dataできません。誰でもget_queryset()のみを使用してその必要性を説明できる状況を見つけることができますか?
私は、get_queryset()とget_context_data()のオーバーロードの必要性については言及していません。最初の質問では、get_queryset()とget_context_data()の両方がフロントエンドにデータを送信するということです。フロントエンドにすべてのデータを送信する方法としては、2番目の方法がなくても十分です。 –
私はあなたがリクエスト/応答サイクルを誤解していると思うかもしれません** ** 'get_queryset()'や 'get_context_data()'もフロントエンドにデータを送りません。貼り付けられたコードからわかるように、ユーザにデータを送る関数は、 'render_to_response'を呼び出すので' get() 'です。これらの方法の両方は、異なる点で途中で呼び出されます。そして、それぞれは違うことをします。 OPでのあなたの質問は: 'get_queryset()がdjangoで重複している場合です。 '上記の基本djangoコードで分かるように、そうではありません。 – 2ps