2010-03-26 10 views
5

Tengo un modelo con varios campos diferentes como first_name, last_name, etc. También tengo campos first_name_ud, last_name_ud, etc. que corresponden a la última fecha actualizada para los campos relacionados (es decir, cuando first_name se modifica, entonces first_name_ud se establece en la fecha actual).Actualizar campo automáticamente cuando se cambia un campo diferente

¿Hay alguna manera de que esto suceda automáticamente o necesito verificar qué campos han cambiado cada vez que guardo un objeto y luego actualizo los campos relacionados "_ud".

¡Muchas gracias!

Respuesta

0

Gracias por su ayuda. Terminé modificando el método de guardado del modelo, que creo que funcionará:

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() 
Cuestiones relacionadas