【问题标题】:How to use update_fields in Django signals如何在 Django 信号中使用 update_fields
【发布时间】:2020-07-27 04:03:37
【问题描述】:

我正在尝试使用 'update_fields' 参数传递给 Django 中的信号。

我现在有一些非常简单的东西,即:

@receiver(pre_save, sender=models.UserAdmin)
@receiver(pre_save, sender=models.UserGroupAdmin)
def update_timestamps(sender, instance, update_fields, **kwargs):
    print(f'Update fields: {update_fields}')

update_fields无论更新什么都显示为无,这表明我没有理解某些内容。

我错过了什么?

【问题讨论】:

  • 您似乎想找出哪些字段已更改,但这不是update_fields 的用途。 update_fields 方法允许您在调用save() 时指定要保存的字段。如果你的信号中是None,那么它在被调用时没有传递给save()方法。
  • 搜索 django signal changed fields 会出现像 like these 这样的问题,可能会对您有所帮助。

标签: django django-signals


【解决方案1】:

update_fields 传递给 Model.save() 的要更新的字段集, 如果没有将 update_fields 传递给 save(),则为 None。

update_fields 只是传递您在 save() 方法中设置的字段以进行更新

它们不是在特定情况下更新的字段(您可以在此列表中设置几个字段,但可能只有其中一个会在数据库中实际更改)

【讨论】:

  • 我可以并且已经阅读了这些文件。我不明白这如何回答我的问题
  • Django 默认会更新所有字段,并且没有实际更新的字段的内存
猜你喜欢
  • 2019-07-01
  • 2017-12-23
  • 1970-01-01
  • 2012-12-01
  • 2016-03-21
  • 2014-09-27
  • 1970-01-01
  • 2019-10-17
  • 2020-06-26
相关资源
最近更新 更多