在django中保存单个字段的函数调用

时间:2016-08-21 07:21:51

标签: python django django-models

说我有一个模特:

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 个答案:

答案 0 :(得分:1)

只需覆盖save中的Workplace

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