更改某字段时自动更新另一个字段
我有一个模型,里面有很多不同的字段,比如 first_name(名字)、last_name(姓氏)等等。还有一些字段,比如 first_name_ud 和 last_name_ud,这些字段是用来记录相关字段最后一次更新的日期的(也就是说,当 first_name 被修改时,first_name_ud 就会被设置为当前日期)。
有没有办法让这个过程自动进行,还是说每次保存一个对象的时候,我都需要检查哪些字段发生了变化,然后再更新相关的 "_ud" 字段呢?
非常感谢!
2 个回答
0
谢谢你的帮助。我最后修改了模型的保存方法,我觉得这样可以解决问题:
def save(self):
current_date = date.today()
if self.id:
try:
old = UserProfile.objects.get(pk = self.id)
fields = UserProfile._meta.fields
for field in fields:
field_name = field.name
date_name = field_name + '_ud'
if not field_name.endswith('_ud') and date_name in fields:
if self.__dict__[field_name] != old.__dict__[field_name]:
self.__dict__[date_name] = current_date
self.date_updated = current_date
except UserProfile.DoesNotExit:
pass
super(UserProfile, self).save()
3
要么你可以编写一些Field
的子类,让它们同时更新这两个字段,要么就使用服务器端的触发器。