2010-03-26 22 views
5

Ich habe ein Modell mit einer Reihe von verschiedenen Feldern wie Vorname, Nachname, usw. Ich habe auch Felder first_name_ud, last_name_ud usw., die dem letzten aktualisierten Datum für die verwandten Felder entsprechen (Wenn zum Beispiel first_name geändert wird, wird first_name_ud auf das aktuelle Datum gesetzt).Feld automatisch aktualisieren, wenn ein anderes Feld geändert wird

Gibt es eine Möglichkeit, dies automatisch durchzuführen oder muss ich überprüfen, welche Felder bei jedem Speichern eines Objekts geändert wurden, und dann die zugehörigen "_ud" -Felder aktualisieren.

Vielen Dank!

Antwort

3

Entweder write Field children, die beide Felder aktualisieren oder serverseitige Trigger verwenden.

0

Danke für Ihre Hilfe. Ich habe am Ende die Speichermethode des Modells geändert, die ich denke, wird funktionieren:

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() 
Verwandte Themen