在我的 Django 应用程序中,我有一个 Newsletter 模型。现在我希望能够从 Django Admin发送时事通讯(甚至重新发送)。
我可以在方法上加上一个钩子来做到这一点,Model.save()
但是还有另一种不与模型相关的方法吗?
谢谢
在我的 Django 应用程序中,我有一个 Newsletter 模型。现在我希望能够从 Django Admin发送时事通讯(甚至重新发送)。
我可以在方法上加上一个钩子来做到这一点,Model.save()
但是还有另一种不与模型相关的方法吗?
谢谢
管理员操作允许您轻松连接自定义操作,这些操作可以对管理员列表页面中的选定项目执行。
如果你是从管理员那里做的,那么你需要覆盖 save() 方法,但它可以是 AdminModel 保存...不需要是完整的模型保存。
但是,如果您要发送大量电子邮件,更好的方法是安装django-mailer,它将电子邮件放入队列中以供以后处理,然后为您提供新的管理命令:send_mail。
因此,一旦您准备好发送时事通讯,您就可以手动运行python manage.py send_mail
. 任何有错误的电子邮件都将被移至延迟队列,您可以稍后重试发送它们。
您可以通过manage.py send_mail
从 cron 运行来自动执行此操作。
如果您真的想从管理站点获得幻想并执行此操作,请安装django-chronograph并从那里设置您的 send_mail 时间表。
你可以试试这个https://www.youtube.com/watch?v=WvL1cR2MgLI
只是改变
def available (modeladmin,request,queryset):
queryset.update(status='ava')
def not_available (modeladmin,request,queryset):
queryset.update(status='not')
类似于
def send(modeladmin, request, queryset):
for data in queryset:
subject=data.title
message=data.mesage
for d in Users.objects.filter(newsletter=True):
email=d.email
sendemail = EmailMessage(subject, message+unsubscribe, 'emailo@mdjangotutsme.com',
[email], [],
headers = {'Reply-To': 'emailo@mdjangotutsme.com'})
sendemail.content_subtype = "html"
sendemail.send()