2010-03-26 11 views
5

Mam model z wieloma różnymi polami, takimi jak first_name, last_name, itp. Mam również pola first_name_ud, last_name_ud, itp., Które odpowiadają ostatniej zaktualizowanej dacie powiązanych pól (tzn. gdy nazwa_imie jest zmodyfikowana, to first_name_ud jest ustawione na bieżącą datę).Automatycznie aktualizuj pole, gdy zmienia się inne pole

Czy jest sposób, aby to się stało automatycznie lub czy muszę sprawdzić, które pola zmieniły się za każdym razem, gdy zapisuję obiekt, a następnie aktualizuję powiązane pola "_ud".

Wielkie dzięki!

Odpowiedz

0

Dzięki za pomoc. Skończyłem na modyfikacji metody zapisu modelu, która moim zdaniem zadziała:

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() 
Powiązane problemy