django - 使用 DeleteObject 通用 View 删除对象后重定向到父级

标签 django django-views django-class-based-views

假设我有两个模型,Book 和 Page:

class Book(models.Model):
    pass

class Page(models.Model):
    book = models.ForeignKey(Book)

我需要删除一个页面并被重定向到该页面所属的特定书籍。为此,我创建了一个基于类的 View 来删除页面:
class PageDeleteView(DeleteView):
    model = Page

    def get_success_url(self, **kwargs):
        return reverse_lazy('book_detail', self.book.pk)

问题是,由于在调用 get_success_url 之前删除了对象,因此此方法失败,并出现 404 错误。

我怎么能做到?

更新:

遵循@DrTyrsa 的想法,我已经实现了它覆盖删除方法,因此该类将如下所示:
reverse_lazy = lambda name=None, *args : lazy(reverse, str)(name, args=args)

class PageDeleteView(DeleteView):
    model = Page

    def get_success_url(self, **kwargs):
        return reverse_lazy('book_detail', self.book.pk)

    def delete(self, request, *args, **kwargs):
        self.book_pk = self.get_object().book.pk
        return super(PageDeleteView, self).delete(request, *args, **kwargs)

最佳答案

保存对象的 pk删除前。在 __init__ , 例如。和 name your URL patterns .

关于django - 使用 DeleteObject 通用 View 删除对象后重定向到父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10631381/

相关文章:

mysql - 优化 django 数据库查询

python - 如何在运行时在 Django 中添加动态字段

Python Django 如何在views.py 中获取登录用户的值?

javascript - 如何将 Django inlineformset_factory 与自定义表单集一起使用

python - 如何在django查询中获取每个人最近添加的记录

基于 Django 类的 View 和注释

python - 就长期速度而言,大型 mysql 查询与 http post 连接的比较

mysql - Django-查询过滤器,具有外部关系

python - 将 select_lated 和 prefetch_lated 与许多参数一起使用

python - Django 按年分页