gpt4 book ai didi

Django - 管理员 save_model() 和 post_save 信号之间的区别

转载 作者:行者123 更新时间:2023-12-04 01:47:11 25 4
gpt4 key购买 nike

对于我的应用程序,当通过表单保存模型时,我需要执行额外的操作。在实践中,如果表单中存在某些条件,我需要在另一个模型中添加一个值。

为此,我有两种选择,但我想了解两者的优缺点。

  • 使用 post_save 信号
  • 覆盖 admin.py 中的 save_model 方法,因为它在 documentation 中说过“覆盖此方法允许执行保存前或保存后操作。”

  • 我目前以这种方式使用后者
    def save_model(self, request, obj, form, change):

    #some pre save operations....

    #this call the save model method
    super(MyModelAdmin, self).save_model(request, obj, form, change)

    #some post save operations...

    它有效

    但我想了解的是:
  • 对于我必须做的事情,这两种方法有什么区别,什么是最正确的。
  • save_model 方法是否与管理界面的使用有关?如果我使用另一个不同于 Django 管理员的前端会发生什么?
  • 一般来说,执行覆盖 save_model 和使用信号的前后保存操作有什么区别?
  • 最佳答案

    我认为你做对了。这可能会帮助您了解差异。
    save_model来自 ModelAdmin 的方法当您尝试从 创建或更新某些内容时调用仅 django 管理员 但触发信号不管 Action 发生的地方。这意味着 prepost save_model 中的操作如果您从 之外的某个地方更改模型,该方法将不起作用django 管理员 但是 信号 既适用于管理 View 之外,也适用于您自定义编写的代码块。

    关于Django - 管理员 save_model() 和 post_save 信号之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54843546/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com