美文网首页
Model记录原始字段值

Model记录原始字段值

作者: 十三流 | 来源:发表于2017-02-10 17:35 被阅读0次

场景

某个Model中20个字段左右,记录了不同的版本号,有很多地方会修改版本号的值,现在要记录历次版本号的变化,但是不太可能去改动修改版本号时的代码,只能在保存的时候入手,那首先想到的是在Model instance初始化的时候记录原始的值,在保存的时候比较这些值

解决办法

废话不说,直接上代码

class Version(models.Model):
    field1=models.IntegerField(default=0)
    ...
    def __init__(self, *args, **kwargs):
        super(Version, self).__init__(*args, **kwargs)
        
        self.__important_fields = [x.name for x in POSDBVersion._meta.fields if x.name not in ('id',)] 
        for field in self.__important_fields:
            setattr(self, '__original_%s' % field, getattr(self, field))
    
    def save(self,*args,**kwargs):
        for field in self.__important_fields:
            if getattr(self, '__original_%s' % field)!=getattr(self,field):
                #do something
        super(POSDBVersion, self).save(*args, **kwargs)

相关文章

网友评论

      本文标题:Model记录原始字段值

      本文链接:https://www.haomeiwen.com/subject/zrtnittx.html