gpt4 book ai didi

python - Django预保存信号

转载 作者:行者123 更新时间:2023-12-01 03:48:22 25 4
gpt4 key购买 nike

我的一个模型有一个预保存信号。这个预保存信号会执行一些后台 API 事件,将新的和更新的对象联合给服务提供商,并返回无意义的数据,以便我们在原始数据的位置存储为引用。

API 中的新增方法和更新方法是不同的。

理想情况下,如果用户要执行更新,他们会清除字段中无意义的数据并在其上键入内容。我的信号需要知道更新了哪些字段才能仅发送这些字段的更改,因为发送更新中的所有字段除了更新之外还会发送无意义的引用作为原始数据。

预保存信号具有参数update_fields。我查了一些细节,发现这个参数可能会包含更新时的所有字段。

<小时/>

关于update_fields 因为文档对此的信息很少

  • 创建对象时,是否会向 update_fields 传递任何内容?
  • 更新对象时,是否将所有字段传递到 update_fields,还是仅传递已更新的字段?

关于如何解决这个问题还有其他建议吗?我知道 post_savecreated 参数,但我更喜欢在保存数据之前对其进行操作。

最佳答案

When creating an object, does anything get passed to update_fields?

No

When updating an object, do all fields get passed to update_fields, or just the ones that were updated?

取决于谁在调用 save() 方法。默认情况下,Django 不设置 update_fields。除非您的代码调用 save() 并设置了 update_fields 参数,否则它将重写数据库中的所有字段,并且 pre_save 信号将看到 update_fields=无

My signal would need to know which fields were updated to send changes for just those fields.

除非您控制调用对象上 save() 方法的内容,否则您将无法使用 update_fields 获取此信息。该参数的目的不是让您跟踪哪些字段已更改 - 而是当您知道只需要写入数据库中的某些列时,可以促进数据的高效写入。

关于python - Django预保存信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38586282/

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