怎么实现 django admin 里添加插入一个数据,都会发一个邮件这个功能?

2016-05-10 21:58:10 +08:00
 scott123
将某些类添加到注册到 admin 里,当在 admin 后台管理页面添加数据的时候都会自动发邮件出来通知我。
有木有比较的例子及源码值得参考。
3407 次点击
所在节点    Python
12 条回复
wph95
2016-05-10 22:00:31 +08:00
可以研究 django admin log
dododada
2016-05-10 22:04:49 +08:00
unixbeta
2016-05-10 22:08:14 +08:00
需要重写 save 方法
laoyur
2016-05-10 22:09:10 +08:00
django 的 signal : https://docs.djangoproject.com/en/dev/ref/signals/
在 post_save 事件里去做发邮件功能
neoblackcap
2016-05-10 22:12:27 +08:00
@scott123
没错就如 @laoyur 所说的,写一个 signal 的 handler 函数就好了,注意使用消息队列,发邮件很费时的,要不就是上 sendmail , mailgun 什么的
virusdefender
2016-05-11 00:11:03 +08:00
signal 才是正解
ayaseangle
2016-05-11 01:12:42 +08:00
模型回调。
glasslion
2016-05-11 09:58:34 +08:00
正解显然是 `ModelAdmin.save_model` https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model

signal, Model.save() 都是全局的, 不能只针对 django admin 触发
alicli
2016-05-11 13:15:37 +08:00
上面说的其实都可行,但是要注意不管是 signal, Model.save()还是 save_model ,都要检查状态,注意区分是插入数据还是更新数据
roricon
2016-05-12 00:00:37 +08:00
可以 override change form 那个模版。在 save 的时候触发一个自定义的 signal
roricon
2016-05-12 00:13:08 +08:00
不好意思,刚才脑子抽了, 8 楼是正解。
scott123
2016-05-13 10:41:14 +08:00
谢谢,回去实现一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/277745

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX