Модель Строка Имя поля в URL вместо id - AttributeError Django - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь получить доступ к подробному виду.Предыдущий я использовал идентификатор в URL, и он работал правильно.Теперь мое состояние изменилось, и вместо id я хочу добавить place_id в URL.Для этого я использовал <str:place_id>, но он дает AttributeError.Как я могу добавить place_id в URL и получить правильные данные.И что такое слизняк.Должен ли я использовать это.Но мой 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 Ответ

1 голос
/ 29 марта 2019

Вы должны указать представлению, что вы используете place_id в URL-адресе и что это соответствует полю place_id в модели, которую следует использовать для поиска карты.

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