检查是否在模型的init方法中保存或删除了Django模型

时间:2014-10-17 21:43:57

标签: django methods orm model init

如何检查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语句作为开销。

0 个答案:

没有答案