如何检查Django模型的 init 方法,无论对象是要保存还是删除。在调用save或deleted方法之前,我想做一些仅的东西。
class Book(models.Model):
title = models.CharField(max_length=150)
def __init__(self, *args, **kwargs):
super(Book, self).__init__(*args, **kwargs)
if self.is_about_to_get_saved_or_deleted:
do_something()
对为什么:
说几句话我需要实现实时Elasticsearch搜索索引更新。因此,我需要检查某些模型字段值是否更改或是否删除了对象。删除不是问题。但是,要查看save方法中的字段值是否已更改,我需要首先在init方法中存储一堆值:
https://stackoverflow.com/a/1793323/996638
但是当仅仅读取对象时,也会调用init方法。为了防止开销,我只想在对象即将被保存时存储相关的(旧的)字段值。这只需要一个IF语句作为开销。