简体   繁体   English

如果网址中没有pk,则Django DetailView显示最后

[英]Django DetailView show last if no pk in url

With a class based DetailView is there a way to say "if no pk is specified" when the url is called, just use MyModel.object.last() as object reference? 使用基于类的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()

I'm running Django 1.11 我正在运行Django 1.11

You can override the get_object method. 您可以覆盖get_object方法。 Note you should be checking whether pk is set in self.kwargs , not whether it is equal to False . 注意,您应该检查pk是否在self.kwargs设置,而不是是否等于False

def get_object(self):
    if 'pk' not in self.kwargs:
        return MyModel.objects.last()
    return super(MyDetailView, self).get_object()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM