在Django中,如何避免/跳过/撤消预保存事件?

时间:2014-09-24 17:34:26

标签: django django-orm django-extensions

我正在使用django_extensions TimeStampedModel,它提供modified字段,通过pre_save事件设置自己。这很好,除了我正在转换旧架构并希望保留原始modified日期戳。如何使用其他值进行monkeypatch,避免,取消或替换pre_save'd修改?

2 个答案:

答案 0 :(得分:1)

最后,我只是做了一个结束:

from django.db import connection
cursor = connection.cursor()
cursor.execute("update %s set modified='%s' where id=%s" % (
    my_model._meta.db_table, desired_modified_date, my_model.id))

答案 1 :(得分:0)

你做不到。不是你要问的意思。

您可以创建假字段并将其填充到clean()

Class MyModel(models.Model):

    def clean(self):
        self._modified = self.modified

...

@receiver(pre_save, sender=MyModel)
def receiver_(self, *args, **kwargs):
    self.modified = self._modified

因此,您需要备份字段值并稍后将其恢复。 备注:确保您的应用程序以后加载