转发多对一描述符属性错误 Django

Forward Many to One Descriptor attribute error Django

我是 django 的新手,我做错了什么?我想从专辑中删除一首歌,我想将它重定向到专辑详细信息页面。

class SongDelete(DeleteView):
    model = Song
    album_id = Song.album.pk
    success_url = reverse_lazy('music:detail', args=[album_id])

你不能访问Song.album,因为视图不知道这里的当前Song是哪个。

您可以使用 get_object 方法并将其重写为 get_success_url:

from django.urls import reverse


class SongDelete(DeleteView):
    model = Song

    def get_success_url(self):
        album = self.object.album

        return reverse('music:detail', kwargs={'album_pk': album.pk})

其中 self.object 现在是您要删除的特定对象 (Song)。现在您可以访问其 album 属性.

注意:将 'album_pk' 键替换为您的 music:detail url.

中的任何名称