我想在数据库中添加类别时向django admin创建通知。然后,管理员应单击布尔字段并发布类别。
答案 0 :(得分:2)
您可以覆盖分类模型上的save()方法 - 这是一些示例基本代码...
class Category(models.Model):
def save(self, *args, **kwargs):
if not self.pk:
#no pk so it is new
try:
send_mail('Subject here', 'Here is the message.', 'from@example.com',
['superuser@mail.com'], fail_silently=True)
except:
# do something a bit more elaborate here, like logging
pass
else:
#do something if it is an update or...
pass
super(Category, self).save(*args, **kwargs)
走这条路,只记得导入send_mail功能......
from django.core.mail import send_mail
此外,您可以从数据库中动态获取超级用户 - 或者从设置文件导入 - 我将其硬编码为例。
编辑:请参阅Brandon关于post_save的评论。这可能是一个更好的解决方案,虽然稍微先进一点。如果您不想走这条路线,请将电子邮件逻辑包装在一个try / except块中,以避免像电子邮件这样的二次电子邮件失败而导致保存失败。