2

您好,我想知道是否有办法在有人更新 Django 管理页面中的某些字段时向用户发送电子邮件。有没有办法做到这一点?我已经在表单完成后发送了一封电子邮件,但是一旦其中一个用户通过管理页面更新,我需要发送更多电子邮件。

我查看了 post_save、model_save 和 save_formset 方法,但我觉得它们不是我要找的。

4

2 回答 2

5

尝试覆盖该ModelAdmin.save_model方法。我认为它有你需要的所有信息的钩子。

change变量使您可以区分用户添加或更改模型实例。

form.changed_data为您提供已更改字段名称的列表,让您确定是否发送电子邮件。

最后request.user确定进行更改的用户。

于 2012-07-19T16:19:07.443 回答
1

你需要django.db.models.signals.post_save信号。模型保存后正在打磨。

def my_callback(sender, **kwargs):
    # Your specific logic here
    pass

post_syncdb.connect(my_callback, sender=yourapp.models.TheModel)

使用此信号发送的参数:

  • 发件人:模型类。
  • instance:正在保存的实际实例。
  • 创建了 一个布尔值;如果创建了新记录,则为真。
  • raw : 一个布尔值;如果模型完全按照呈现方式保存(即加载夹具时),则为真。不应查询/修改数据库中的其他记录,因为数据库可能尚未处于一致状态。

所以你只需要回调和发送者。

于 2012-07-19T16:23:52.790 回答