如何在我的get_success_url

时间:2019-06-18 00:14:30

标签: django django-models django-forms django-templates django-views

我整个下午都在努力尝试将变量传递给get_success_url,以便在处理UpdateView之后显示正确的记录。我正在使用基于类的视图,并且试图更新记录,然后在其他视图中显示相应的更新记录。但是,当我传递pk时,它可以工作,但不是正确的。

本质上,这是有问题的代码...

def get_success_url(self):
    return reverse_lazy('Book:create_new_author_detail', kwargs={ 'pk' : self.object.pk })

上面的方法在很多情况下都可以正常工作。但是,在这种情况下,我试图传递与该特定updateview不匹配的特定pk。

我尝试过类似....

def get_success_url(self):
    return reverse_lazy('Book:create_new_author_detail', kwargs={ 'pk' : self.object.new_author.pk }) 

也许像....

def get_success_url(self):
    return reverse_lazy('Book:create_new_author_detail', kwargs={ 'pk' : self.object.pk, 'new_author' : self.new_author.id  }) 

会工作吗?我可以使用此代码来获得pk,但不是正确的代码。我想引用new_author.id,以便reverse_lazy选择正确的pk。

预先感谢您的任何想法。

1 个答案:

答案 0 :(得分:0)

我想一晚上睡个好觉...

这就是我想出来的.....

def get_success_url(self):
    book= Author.objects.filter(author_id=self.object.pk).first()
    return reverse_lazy('Author:author_view', kwargs={ 'pk' : book.pk })