【问题标题】:How to pass variable as ARG or KWARG in my get_success_url如何在我的 get_success_url 中将变量作为 ARG 或 KWARG 传递
【发布时间】:2019-10-31 13:49:09
【问题描述】:

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

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

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

上述方法可以正常工作,并且在许多情况下都可以。但是,在这种情况下,我试图传递与此特定更新视图不​​一致的特定 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。

提前感谢您的任何想法。

【问题讨论】:

  • 如果对象具有 new_author,return reverse_lazy('Book:create_new_author_detail', kwargs={ 'pk' : self.object.new_author.pk }) 应该可以工作,但 return reverse_lazy('Book:create_new_author_detail', kwargs={ 'pk' : self.object.pk, 'new_author' : self.new_author.id }) 将不起作用,因为视图没有任何名为 new_author 的属性

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


【解决方案1】:

我猜一晚睡眠会有所帮助....

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

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 })

【讨论】:

    猜你喜欢
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 2019-10-08
    • 2017-08-16
    • 2017-05-27
    • 2022-12-18
    • 2017-03-25
    相关资源
    最近更新 更多