如果url中没有pk,Django DetailView会显示最后一个

问题描述 投票:0回答:1

使用基于类的DetailView有一种方法可以在调用url时说“如果没有指定pk”,只需使用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

python django django-class-based-views
1个回答
4
投票

您可以覆盖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()
© www.soinside.com 2019 - 2024. All rights reserved.