Музыкальное приложение, где я пытался отобразить детали альбома после его нового создания с помощью реверса... получаю нижеупомянутую ошибку, пожалуйста, помогите
Traceback (most recent call last):
File "C:\Users\Sanath\anaconda3\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "C:\Users\Sanath\anaconda3\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Sanath\anaconda3\lib\site-packages\django\views\generic\base.py", line 103, in view
return self.dispatch(request, *args, **kwargs)
File "C:\Users\Sanath\anaconda3\lib\site-packages\django\views\generic\base.py", line 142, in dispatch
return handler(request, *args, **kwargs)
File "C:\Users\Sanath\anaconda3\lib\site-packages\django\views\generic\edit.py", line 184, in post
return super().post(request, *args, **kwargs)
File "C:\Users\Sanath\anaconda3\lib\site-packages\django\views\generic\edit.py", line 153, in post
return self.form_valid(form)
File "C:\Users\Sanath\anaconda3\lib\site-packages\django\views\generic\edit.py", line 136, in form_valid
return super().form_valid(form)
File "C:\Users\Sanath\anaconda3\lib\site-packages\django\views\generic\edit.py", line 65, in form_valid
return HttpResponseRedirect(self.get_success_url())
File "C:\Users\Sanath\anaconda3\lib\site-packages\django\views\generic\edit.py", line 125, in get_success_url
url = self.object.get_absolute_url()
File "C:\Users\Sanath\Desktop\website\music\models.py", line 12, in get_absolute_url
return reverse('music:detail',kwargs = {'pk' : self.pk})
File "C:\Users\Sanath\anaconda3\lib\site-packages\django\urls\base.py", line 88, in reverse
return resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
File "C:\Users\Sanath\anaconda3\lib\site-packages\django\urls\resolvers.py", line 828, in _reverse_with_prefix
raise NoReverseMatch(msg)
django.urls.exceptions.NoReverseMatch: Reverse for 'detail' with keyword arguments '{'pk': 11}' not found. 1 pattern(s) tried: ['music/(?P<album_id>[0-9]+)/\\Z']
urls.py
from django.urls import path
from . import views
app_name = 'music'
urlpatterns = [
#music/
path('', views.index,name = 'index'),
#music/71/
path('<int:album_id>/', views.detail,name = 'detail'),
path("register/",views.UserFormView.as_view(),name = 'register'),
path("album/add/",views.albumcreate.as_view(),name = 'album-add'),
#url pattern for the view albumcreate
]
models.py
from django.db import models
from django.urls import reverse
# Create your models here.
class album(models.Model): #inherit from models.Model
artist = models.CharField(max_length=250) #when migrated to db it will be a column with the same name automatically(here it is variables
#charfield ,foreignkey is datatype
album_title = models.CharField(max_length=500)
genre = models.CharField(max_length=100)
album_logo = models.CharField(max_length=1000)
def get_absolute_url(self):
return reverse('music:detail',kwargs = {'pk' : self.pk})
#returns the detail page of the album we just created
def __str__(self):
return self.album_title+'-'+self.artist#string representation of obj
class songs(models.Model):
#songs needs to be part of an album
album = models.ForeignKey(album,on_delete=models.CASCADE)
#bts another column with unique id 1st album id 1 2nd album id 2 and so on
#let pk of red = 1 then a song of that album will have fk as 1 so that they are linked
#when ever we delete the ablum red all the songs in the album should be deleted hence delete
file_type= models.CharField(max_length=10) #mp3etc
song_title = models.CharField(max_length=250)
def __str__(self):
return self.song_title
views.py
Ожидаемым результатом было открытие и отображение деталей созданного мной альбома .............................................................................................................................................................................................................................................................................................................................................................................................................................................
Проблема здесь:
def get_absolute_url(self):
return reverse('music:detail',kwargs = {'pk' : self.pk})
^^^^^^^^^^^^^^^^
В урлах вы передаете album_id
, тогда как здесь вы передаете pk
. Следовательно, изменение на àlbum_id
должно исправить ситуацию:
def get_absolute_url(self):
return reverse('music:detail',kwargs = {'album_id' : self.pk})