URL中的模型字符串字段名称而不是ID-AttributeError Django

时间:2019-03-29 10:22:06

标签: django django-models django-forms django-templates django-views

我正在尝试访问详细信息视图。以前我在url中使用了id,它可以正常工作。现在我的状况已经改变,我想在网址中添加id而不是place_id。为此,我使用了<str:place_id>,但它给出了AttributeError。如何在网址中添加place_id并获取正确的数据。什么是。我应该使用它吗?但是我的place_id是唯一的。

urls.py

path('detail/<str:place_id>/', Detail.as_view(), name='detail'),

Models.py

class Map(models.Model):
    name = models.CharField(max_length=255, null=True, blank=True)
    address = models.CharField(max_length=255, null=True, blank=True)
    place_id = models.CharField(max_length=255, null=True, blank=True, unique=True)

Views.py

class Detail(LoginRequiredMixin, generic.DetailView):
    template_name = "detail.html"
    model = Map
    context_object_name = 'map'

错误-

Generic detail view Detail must be called with either an object pk or a slug in the URLconf.

1 个答案:

答案 0 :(得分:1)

您需要告诉视图您正在URL中使用place_id,并且该映射到模型上的place_id字段,该字段应用于查找Map。

class Detail(LoginRequiredMixin, generic.DetailView):
    template_name = "detail.html"
    model = Map
    context_object_name = 'map'
    slug_url_kwarg = 'place_id'
    slug_field = 'place_id'