如果 url 中没有 pk,Django DetailView 显示最后
Django DetailView show last if no pk in url
使用基于 class 的 DetailView 有没有办法在调用 url 时说 "if no pk is specified",只需使用 MyModel.object.last()
作为对象引用?
url(r'^(?:(?P<pk>\d+)/)?detail/$', views.MyDetailView.as_view()),
class MyDetailView(DetailView):
model = MyModel
if self.kwargs['pk'] == False:
self.object = MyModel.object.last()
我是 运行 Django 1.11
您可以覆盖 get_object
方法。请注意,您应该检查 pk
是否设置在 self.kwargs
中,而不是它是否等于 False
.
def get_object(self):
if 'pk' not in self.kwargs:
return MyModel.objects.last()
return super(MyDetailView, self).get_object()
使用基于 class 的 DetailView 有没有办法在调用 url 时说 "if no pk is specified",只需使用 MyModel.object.last()
作为对象引用?
url(r'^(?:(?P<pk>\d+)/)?detail/$', views.MyDetailView.as_view()),
class MyDetailView(DetailView):
model = MyModel
if self.kwargs['pk'] == False:
self.object = MyModel.object.last()
我是 运行 Django 1.11
您可以覆盖 get_object
方法。请注意,您应该检查 pk
是否设置在 self.kwargs
中,而不是它是否等于 False
.
def get_object(self):
if 'pk' not in self.kwargs:
return MyModel.objects.last()
return super(MyDetailView, self).get_object()