Jus*_*rez 1 django django-admin
任何人都可以指导我如何在删除按钮旁边放置一个按钮的正确方向
?我想在它旁边放一个确认和拒绝按钮,当我单击它时,它会向用户发送一封电子邮件,表明他/她的申请被接受或拒绝。我在网上搜索了解决方案,并在这里阅读了一些类似的问题,但我不确定这些是否是正确的选择。
小智 5
首先通过编写confirmed()和denied()方法在list_page中制作confirm和deny按钮,然后通过重写get_urls()方法将自定义url附加到管理url中,并将这些url映射到视图方法confirmed_application()和denied_application()。
处理完您的逻辑后,您可以重定向相同的change_list页面。
@admin.register(YourModel)
class YourModelAdmin(admin.ModelAdmin):
list_display = ['your_model_fields', 'confirmed', 'denied']
def confirmed(self, obj):
url = reverse('admin:confirm_url', kwargs={'id': obj.id})
return format_html('<a class="button" href="{}">Confirm</a>', url)
def denied(self, obj):
url = reverse('admin:denied_url', kwargs={'id': obj.id})
return format_html('<a class="button" href="{}">Deny</a>', url)
def get_urls(self):
urls = super().get_urls()
custom_urls = [
path('confirm/<int:id>', self.confirmed_application, name='confirm_url'),
path('deny/<int:id>', self.denied_application, name='denied_url'),
]
return custom_urls + urls
def confirmed_application(self, request, id):
# you get object_id you can do whatever you want
# you can send a mail
# after processed all logic you can redirect same modeladmin changelist page
redirect_url = "admin:{}_{}_changelist".format(self.opts.app_label, self.opts.model_name)
return redirect(reverse(redirect_url))
def denied_application(self, request, id):
# same as confirmed_application do the logic
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1913 次 |
| 最近记录: |