8

我想知道当您在 Django 1.3 中使用 DetailView 时,是否可以使用除 pk 或 slug 之外的其他东西。

例如,我目前有:

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

作为我的网址。说我想要类似的东西:

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

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

4

2 回答 2

14

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

如果你需要更复杂的东西,你总是可以get_object在视图类中覆盖。

于 2011-04-25T17:30:51.260 回答
0

您可以使用属性“pk_url_kwarg”


网址.py

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


视图.py

class MyDetailView(LoginRequiredMixin, DetailView):
    model = ModelName
    pk_url_kwarg = "name" # primary key(to identify object uniquely)
    template_name = "template.html"

供参考查看 uml 设计http://epydoc.pythondiary.com/generic-views/ (点击详细视图)

于 2016-06-29T06:55:59.680 回答