2010-03-26 41 views
5

Tôi có mô hình với một loạt các trường khác nhau như first_name, last_name, v.v. Tôi cũng có các trường first_name_ud, last_name_ud, v.v ... tương ứng với ngày cập nhật cuối cùng cho các trường liên quan (tức là khi first_name được sửa đổi, sau đó first_name_ud được đặt thành ngày hiện tại).Tự động cập nhật trường khi một trường khác nhau được thay đổi

Có cách nào để điều này xảy ra tự động không hoặc tôi có cần kiểm tra xem trường nào đã thay đổi mỗi khi tôi lưu đối tượng và sau đó cập nhật các trường "_ud" có liên quan.

Cảm ơn rất nhiều!

Trả lời

3

Hoặc write Field children cập nhật cả hai trường hoặc sử dụng trình kích hoạt phía máy chủ.

0

Cảm ơn sự giúp đỡ của bạn. Tôi đã kết thúc việc sửa đổi phương thức lưu của mô hình, mà tôi cho rằng sẽ hoạt động:

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() 
Các vấn đề liên quan