Skip to main content
 首页 » 编程设计

python之Django 管理员自定义

2025年05月04日26pander-it

我正在设计一个管理界面,邀请邮件将发送给用户。我的邀请模型已准备就绪,在我的邀请管理界面中,我可以看到我添加的用户,管理员可以为其发送电子邮件邀请。

现在我想稍微自定义一下。我想为每一行添加一个 SEND 按钮,该按钮实际上会向该用户发送一封电子邮件。发送邮件功能等都准备好了。我不知道如何自定义此管理模板以添加 send 按钮。有人可以帮忙吗??或者至少给我指出正确的方向......

P.S:它不必是发送按钮,它可以是“操作”下拉菜单的一部分,我可以在其中为选定的用户共同发送电子邮件。

请您参考如下方法:

关于每行的发送按钮,您可以为您的模型(或 ModelAdmin)提供一个新函数,该函数返回指向您的 View 的相应 HTML(或调用相应的 AJAX 函数)。只需将您的函数添加到 ModelAdmin 的“list_display”并确保 HTML 标签不会被转义:

class MyModelAdmin(admin.ModelAdmin): 
    ... 
    list_display = ('name', 'email', 'sender', 'send_email_html') 
 
    def send_email_html(self, obj): 
        # example using a javascript function send_email() 
        return '<a href="send_email(%s)">Send Now</a>' % obj.id 
    send_email_html.short_description = 'Send Email' 
    send_email_html.allow_tags = True 

关于操作的使用,在您的 ModelAdmin 中将“操作”定义为包含您的函数的列表,该函数将 modeladmin、请求、查询集作为参数:

def send_email_action(modeladmin, request, queryset): 
    whatever_you_want_to_do_with_request_and_queryset 
send_email.short_description = 'Send email' 
 
class MyModelAdmin(admin.ModelAdmin): 
    ... 
    actions = [ 
        send_email_action 
    ]