如何为DetailView指定除pk或slug之外的其他内容

Oma*_*lla 8 python django django-views django-1.3

当你在Django 1.3中使用DetailView时,我想知道是否可以使用除了pk或slug之外的东西.

例如,我目前有:

url(r'^mymodel/(?P<pk>\d+)/$', MyDetailView.as_view())
Run Code Online (Sandbox Code Playgroud)

作为我的网址.说我想要的东西:

url(r'^mymodel/(?P<name>\d+)/$', MyDetailView.as_view())
Run Code Online (Sandbox Code Playgroud)

其中name是模型中的一个字段.反正有没有让DetailView使用它来"抓住"我想要的对象并将其传递给我的模板?

Dan*_*man 14

一个slug在Django中没有任何特别的意义.它只是标识行的字段的名称.如果你的slug被称为其他东西,例如name,只需在视图子类中指定nameslug_field属性.

如果您需要更复杂的东西,您始终可以get_object在视图类中覆盖.

  • 另请注意,您的网址行必须如下所示:url(r'^ mymodel /(?P <slug>\d +)/ $',MyDetailView.as_view()) (2认同)