从管理页面(Django)更新模型后发送电子邮件

时间:2012-07-19 16:11:27

标签: django email django-admin django-views

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

我看了一下post_save,model_save和save_formset方法,但我觉得它们不是我想要的。

2 个答案:

答案 0 :(得分:3)

尝试覆盖ModelAdmin.save_model方法。我认为它可以为您提供所需的所有信息。

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

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

最后request.user标识进行更改的用户。

答案 1 :(得分: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)

使用此信号发送的参数:

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

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