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

时间:2017-08-19 13:44:24

标签: django views

我是django的新手,我在这里做错了什么?我想从相册中删除一首歌,我想将其重定向到相册详情页面。

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

1 个答案:

答案 0 :(得分:0)

您无法访问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网址中指定的密钥。