2016-08-21 27 views
0

說我有一個模型:函數調用保存在Django

class Workplace(models.Model): 
    name = models.CharField(max_length=255) 
    ... 
    office_mail_id = models.EmailField(null=True, blank=True) 

我要的是每當電子郵件的值被改變,並保存對象,函數應該運行這將節省的(例如電子郵件)

現在,這可以通過許多方式完成,例如創建自定義保存功能,該功能可以調用電子郵件保存功能或以其他方式創建自定義功能並保存電子郵件:

def set_email(self, email): 
    self.office_mail_id = email 
    self.save() 
    # do whatever i want 
    return 

我想知道的是,有沒有簡單的方法來做到這一點,這樣每當我在一個視圖運行

company.office_mail_id = request.POST.get('email') 
company.save() 

,該函數可以運行它保存爲我想

其他車型

這裏的問題是,我不單獨保存所有字段,但製作一本字典和保存基於關鍵和這樣值的所有領域,因爲有這麼多的領域:

for key in dictionary: 
    setattr(workplace, key, dictionary[key]) 
workplace.save() 

有什麼可以做的最好的方法它?

回答

1

只是覆蓋saveWorkplace

def save(self, *args, **kwargs): 
    # do whatever you need, save other models etc.. 
    super().save(*args, **kwargs)) # or super(Workplace, self).save(*args, **kwargs) 
            # if Python 2 
+0

我不希望它運行每任何領域的改變時做的。有沒有辦法。 – sprksh

+0

@sprksh不是我所知道的。 – DeepSpace