如何在DetailView中指定除pk或slug之外的内容

9
我想知道在使用Django 1.3的DetailView时,是否有可能使用除pk或slug之外的其他内容。
例如,我目前使用的是:
url(r'^mymodel/(?P<pk>\d+)/$', MyDetailView.as_view())

作为我的url。比如说我想要这样一个东西:

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

其中name是模型中的一个字段。是否有任何办法让DetailView使用它来“抓取”我想要的对象并将其传递给我的模板?

2个回答

14

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

如果您需要更复杂的内容,可以始终在视图类中重写 get_object 。


覆盖是我在这里需要做的全部。谢谢! - Omar Estrella
2
请注意,您的URL行必须如下所示:url(r'^mymodel/(?P <slug> \ d +)/ $',MyDetailView.as_view()) - mpaf
除了像用户mpaf建议的那样设置“slug”作为命名参数外,您还可以设置slug_url_kwarg,以便命名参数不是“slug”。 - pymarco

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接