时间:2010-03-26 08:02:55

标签: python django django-models django-forms

我有一个模型,其中有一些不同的字段,如first_name,last_name等。我还有字段first_name_ud,last_name_ud等,它们对应于相关字段的最后更新日期(即,当first_name被修改时,则first_name_ud设置为当前日期。)

有没有办法让这种情况自动发生,或者我是否需要每次保存对象时检查哪些字段已更改,然后更新相关的“_ud”字段。

非常感谢!

2 个答案:

答案 0 :(得分:3)

更新两个字段或使用服务器端触发器的write Field children

答案 1 :(得分: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()