Ошибка NoReverseMatch при попытке изменить URL с помощью форм моделей - PullRequest
0 голосов
/ 24 июня 2018

Я думаю, что ошибка связана с изменениями шаблона URL в django 2.0. Почти все, что я нашел в Google, использует старые шаблоны URL, поэтому они бесполезны.

...models
def get_absolute_url(self):
    return reverse('music:detail', kwargs={'pk':self.pk})

Мои URL:

urlpatterns = [
    #music/add/
    path('add', views.AlbumCreate.as_view(), name="album-add")
    ]

И это форма, я не думаю, что с ней что-то не так, потому что, когда я заполняю саму форму и нажимаю кнопку отправить, на странице списка она показывает, что она была отправлена.

 <form action="", method="post">

сама ошибка:

NoReverseMatch at /music/add/
Reverse for 'detail' with keyword arguments **'{'pk': 11(id of the item i'm adding}'** not found.
1 pattern(s) tried: ['music/(?P<album_id>[0-9]+)/$']

После этого я сразу перехожу к списку, и элемент с идентификатором 11 прямо там, я нажимаю на него, и он открывается без каких-либо проблем

образец детали:

path('<int:album_id>/', views.detail, name='detail')

1 Ответ

0 голосов
/ 24 июня 2018

Ваш шаблон URL подробностей ожидает параметр album_id, но вы передаете его pk.Исправьте свой метод:

def get_absolute_url(self):
    return reverse('music:detail', kwargs={'album_id':self.pk})

или измените шаблон URL:

path('<int:pk>/', views.detail, name='detail')

(но не делайте и то, и другое).

...