我正在创建一个“新功能”部分,其中列出了最后一天的所有数据库更改。关于最近的suggestion,我想使用post_save或pre_save来捕获Django保存模型记录时已经改变的字段。我将这些数据保存在另一个表中(带时间戳)。我知道这是可能的,因为可以观察管理应用程序中的行为 - 它识别哪些字段已被更改。
我可以说,管理员应用程序使用forms.changed_data。但是使用post_save或pre_save不会收到任何表单信息。
是否有一种有效的方法来确定哪些字段已被更改?我是否必须将模型中的每个字段与其当前值(pre_save)进行比较以确定此列表?任何帮助(带代码示例)都将不胜感激。
答案 0 :(得分:1)
答案为here。基本上你可以在初始化对象时缓存你的字段,然后在post_save
信号中你可以将每个字段与缓存的值进行比较......或者编写一个进行比较的方法,并且只返回已经存在的字段修改。