场景
某个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)
网友评论