オブジェクトが存在しない場合に別のテンプレートを使用するように、オブジェクトの管理者の既定の詳細ビューをオーバーライドしたい、つまり
<mydomain>/admin/<myapp>/<mymodel>/<someidthatdoesexist>/
デフォルトのオブジェクト詳細ビューをレンダリングする必要があり、
<mydomain>/admin/<myapp>/<mymodel>/<someidthatdoesNOTexist>/
デフォルトの 404 エラーではなく、カスタム テンプレートをレンダリングする必要があります。
私が読んだことからdjango.views.generic.detail.DetailView
、 を使用する必要がありますが、どうすれば目的を達成できるかわかりません。
私は試した:
<b>in urls.py</b>
url(r'^admin/<myapp>/<mymodel>/(?P<pk>\d+)/$', views.MyModelDetailView.as_view(), name='mymodel_detail'),
url(r'^admin/', include(admin.site.urls)),
<b>in models.py</b>
class MyModelDetailView(DetailView):
model = MyModel
def get(self, request, *args, **kwargs):
try:
self.model.objects.get(pk=kwargs['pk'])
return super(MyModelDetailView, self).get(request, **kwargs)
except Http404:
# render custom template
しかし、私はTemplateDoesNotExist
エラーが発生します:
<myapp>/mymodel_detail.html
オブジェクトが存在する場合にデフォルトのオブジェクト詳細ビューをレンダリングするには、どのテンプレートを設定すればよいですか?
編集
hereの例から、テンプレートを設定する必要はありません...