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()
# "store/models.py"
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=30)
def __str__(self):
return self.name
5条答案
按热度按时间bihw5rsg1#
管理员操作允许您轻松地挂接自定义操作,这些操作可以在管理员列表页面中的选定项目上执行。
arknldoa2#
如果你是从admin中进行的,那么你需要覆盖保存()方法,但是它可以是AdminModel的save...不需要是完整的Model save。
但是,如果您要发送大量电子邮件,更好的方法是安装django-mailer,它可以将电子邮件放入队列中以供稍后处理,然后为您提供一个新的管理命令:发送电子邮件。
所以一旦你准备好发送新闻稿,你可以手动运行
python manage.py send_mail
,任何有错误的邮件都会被移到一个延迟队列中,你可以稍后重试发送。您可以通过从cron运行
manage.py send_mail
来自动执行此操作。如果你真的想在管理员站点上做这件事,安装django-chronograph并在那里设置你的send_mail时间表。
hivapdat3#
你可以试试这个https://www.youtube.com/watch?v=WvL1cR2MgLI
刚改
变成了
5w9g7ksd4#
2022更新:
django.__version__ == 4.1
或者更早。您可以通过重写
django.contrib.admin.options.ModelAdmin._changeform_view
在/admin/.../change
处添加自定义操作:现在可以使用自定义操作在表单中添加简单的sumbit按钮:
优势
4dbbbstv5#
你可以创建自定义django管理操作。
例如,我有下面的**
Person
型号**:现在,我在**
Person
admin中创建了uppercase()
和lowercase()
管理操作**,如下所示。要显示**uppercase()
和lowercase()
管理操作**,必须使用 *actions = ["uppercase", "lowercase"]
:然后,如果我选择了2个人,并将所选人员变为大写,然后单击Go,如下所示:
我可以将两个人大写如下所示:
然后,如果我选择了2个人,并使所选人员小写,然后单击Go,如下所示:
我可以将两个人小写如下所示:
此外,如果我删除
@admin.action()
,如下所示实际函数名称显示如下: