【问题标题】:django admin actions vs save in model classdjango 管理操作与保存在模型类中
【发布时间】:2014-03-26 19:56:48
【问题描述】:

我的模型中有一个布尔字段,表明已向用户发送了包含一些信息的电子邮件。 当我在管理员中更新它时,我使用模型中的save() 方法,实际上正在发送电子邮件。这行得通。

但是:

当我尝试使用这样定义的操作时:

def send_this_email(modeladmin, request, queryset):
    queryset.update(mail_sent=True)
send_this_email.short_description = "Send email with access data"

在管理类中:

actions = [send_this_email]

save() 方法似乎没有被执行,也没有发送电子邮件。如何强制我的send_this_email 执行保存?

如果重要的话,我正在为我的 django 管理员使用 grappeli。

【问题讨论】:

  • 但是发送电子邮件的代码在哪里?
  • @DanielRoseman 它在 save() 方法中

标签: django django-admin django-grappelli


【解决方案1】:

Django 的文档指定在查询集上调用 update() 不会调用 save 或调用任何 pre-/post-save 钩子。我建议您在需要发送电子邮件时显式调用该函数。

或者,您可以在管理函数中调用 save(),但这样会失去 update() 方法的好处。

【讨论】:

  • 我该如何执行它?我应该遍历查询器并调用方法吗?试过。不工作。
  • 是的,应该可以。当您遍历查询集中的对象时会发生什么?
  • 是的,部分。现在我不知道如何引用以前的值。
  • 如果您想更新您的问题以包含有关当前问题的更多详细信息,我很乐意再看看。
猜你喜欢
  • 2011-03-30
  • 2018-07-23
  • 2015-05-27
  • 2014-07-11
  • 2010-10-19
  • 2022-11-30
  • 2016-04-28
  • 2021-04-18
  • 1970-01-01
相关资源
最近更新 更多