Django 不在模型上发出后期保存

Django 不在模型上发出后期保存,django,django-models,Django,Django Models,我正在django中构建一个应用程序,我决定添加历史记录以跟踪模型中数据的更改。我正在使用它来实现这一点。该软件包显然在post_保存信号上保存了一条历史记录 我希望能够在不保存历史记录的情况下保存对象,比如在运行一些后台查询并需要保存数据时。我的问题是,“我能阻止模型发出保存后信号吗?” 我目前对此有一个解决办法。我有一个布尔变量,当我想显示该记录的历史记录时,我将其设置为True。但这并不妨碍历史记录的创建 谢谢。我对信号不太感兴趣,但我认为您应该更改信号处理程序,而不是阻止信号发出。保存模

我正在django中构建一个应用程序,我决定添加历史记录以跟踪模型中数据的更改。我正在使用它来实现这一点。该软件包显然在post_保存信号上保存了一条历史记录

我希望能够在不保存历史记录的情况下保存对象,比如在运行一些后台查询并需要保存数据时。我的问题是,“我能阻止模型发出保存后信号吗?”

我目前对此有一个解决办法。我有一个布尔变量,当我想显示该记录的历史记录时,我将其设置为True。但这并不妨碍历史记录的创建


谢谢。

我对信号不太感兴趣,但我认为您应该更改信号处理程序,而不是阻止信号发出。保存模型后,如果需要执行其他无关的操作,该怎么办

尝试在django simple history/simple_history/models.py中修补create_history_record(),将以下代码段放在顶部:

create_historical_record(self, instance, type):
    if hasattr(instance, 'save_history') and not instance.save_history:
        return
    #rest of method
您也可以尝试暂时断开历史跟踪程序与模型实例的连接,然后再重新连接,但我不确定您会在哪里这样做。它可能也更容易出错

哦,是的,你也可以对历史记录进行分类:

class OptHistoricalRecords(HistoricalRecords):
    def create_historical_record(self, instance, type):
        if hasattr(instance, 'save_history') and not instance.save_history:
            return
        else:
            super(OptHistoricalRecords,self).create_historical_record(instance,type)

有一个方法通过
contribut\u to\u class
被贡献到模型中,它的名称是
save\u without\u historical\u record

obj.some_field = new_value
obj.save_without_historical_record()
...
# now create a record.
obj.save()

如果您不想修补库中的任何内容,可以在此处查看我的答案