在我的 DJango 应用程序中,我想实现一个系统,以便当我的 jmodel 中的 email 字段发生更改时,MyModel 会向该电子邮件发送一封电子邮件地址。我的这个模型上有一个 ModelForm。我应该如何以及如何实现?
- 我是否应该覆盖我的 ModelForm 的
save()方法并将电子邮件发送到那里? - 我是否应该 try catch 某种模型更新信号并将电子邮件发送到那里——如果是的话,怎么做?我应该捕获什么信号?
检查电子邮件是否已更改的好方法是什么。这本身是一件微不足道的事情,但我希望代码驻留在它的正确位置。
谢谢
检查字段是否已更改:Django: When saving, how can you check if a field has changed?
请您参考如下方法:
您可以使用 django-model-changes无需额外的数据库查找即可执行此操作:
from django.db import models
from django.dispatch import receiver
from django_model_changes import ChangesMixin
class MyModel(ChangesMixin, models.Model):
# your model
@receiver(pre_save, sender=MyModel)
def send_email_if_changed(sender, instance, **kwargs):
if 'email' in instance.changes():
# send email
