Dajngoで詳細ビューを使っているときに次の様な例外が発生する事があります。
django.core.exceptions.ImproperlyConfigured: <classname> is missing a QuerySet. Define UserDetailView.model, <classname>.queryset, or override <classname>.get_queryset().
これは主にquerysetやmodelを定義していない場合に発生します。
今回はこの例外が発生する原因と、対処法を解説します。
発生原因
通常、DetaiViewを使うときは以下の様にmodelやquerysetを定義する必要があります。両方定義してもどちらか一方のみ定義しても構いません。
from django.views.generic.detail import DetailView
from django.contrib.auth.models import User
class UserDetailView(DetailView):
model = User
queryset = User.objects.all()
template_name='accounts/detail.html'
しかし、両方とも定義していない場合、ImproperlyConfigured例外が発生します。
django.core.exceptions.ImproperlyConfigured: <classname> is missing a QuerySet. Define <classname>.model, <classname>.queryset, or override <classname>.get_queryset().
(翻訳)
<classname>のクエリセットが見つかりません。<classname>.modelや<classname>.querysetを定義するか、<classname>.get_queryset()をオーバーライドしてください。
対処法
次の2つの対処法があります。
- querysetやmodelを定義する
- get_querysetメソッドをオーバーライドする
コメントを残す