繁体   English   中英

更改用户内联后如何在 Django 管理员中发送一次电子邮件?

[英]How to send email once in Django admin after i have changed user inlines?

例如,假设我有这样的代码:

模型.py

class Application(models.Model):
    user = models.ForeignKey("account.Account", on_delete=models.CASCADE)
    status_choices = [(1.0, "Waiting for info"),
                      (2.0, "Processing"),
                      (3.0, "Problem detected"),
                      (4.0, "Accepted"),
                      (5.0, "Rejected")]
    status = models.FloatField(choices=status_choices, default=status_choices[0][0])

管理文件

class ApplicationInLine(admin.TabularInline):
    models = Application


@admin.register(Account)
class AccountAdmin(UserAdmin):
    inlines = (ApplicationInLine,)

现在在 Django 管理页面上,我想更改用户应用程序状态。 如果我在一个用户下只有一个应用程序,那很好,我可以使用信号通过电子邮件通知用户状态已更改。

但是,如果我在一个用户下有多个应用程序,例如 4,并且我想在单击管理员上的保存按钮之前立即更改所有应用程序状态,那么信号将触发 4 次。

我也已经尝试覆盖 save 方法,但我得到了相同的结果。

有谁知道我如何只发送一次电子邮件,即使一个用户下的多个应用程序发生了变化?

ModelAdmin有一个save_formset()方法,在保存内联时会调用该方法。 重写该方法并检查表单集中的更改怎么样? 就像是:

class AccountAdmin(admin.ModelAdmin):
    inlines = (ApplicationInLine,)

    def save_formset(self, request, form, formset, change):
        if formset.has_changed():
            # Send your mail to user
        super().save_formset(request, form, formset, change)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM