我要求每当添加/更改/删除模型时,都应发送邮件通知。内容将更像django_admin_log条目。我只需要在我的模型中扩展此功能以发送邮件。有什么建议吗?
答案 0 :(得分:3)
Django_log_admin只会跟踪管理界面中所做的更改。如果在其他任何地方更改模型,则不会更新日志。但是,如果您只使用管理员更改就可以了,那么您可以使用django_log_admin和post_save信号的组合来完成这一操作。把它放在你的management.py:
中from django.db.models.signals import pre_save
from django.dispatch import receiver
from django.contrib.admin.models import LogEntry
from django.core.mail import mail_admins
from django.template.loader import render_to_string
#will be triggered every time a LogEntry is saved i.e. every time an action is made.
@receiver(post_save, sender=LogEntry)
def send_notification_email(change, **kwargs):
mail_admins(subject="model %(model) has been changed by %(user)" %
{'model':change.content_type, 'user': change.user},
message = render_to_string('change_email.html', { 'change': change }) )
对自己说:哇,django真的包括所有的电池:D
答案 1 :(得分:0)
你应该看看Django的signals。在您的情况下,您可以将处理程序与post_save
和post_delete
信号连接起来。通过built-in signal documentation查看您可能想要点按的其他人。无需入侵admin
。