我正在尝试访问详细信息视图。以前我在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.
答案 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'