Django Admin后台的删除按钮如何添加

Django Admin后台的删除按钮如何添加

Django Admin后台的删除按钮如何添加

在Django框架中,Admin后台是一个非常强大和方便的工具,可以用来管理网站的数据库。在Admin后台中,我们可以对数据库中的数据进行增删改查操作。但是,默认情况下,Django Admin并没有提供删除按钮,只有一个删除动作的下拉框,需要用户手动选择要删除的对象并确认删除操作。如果想要给Admin后台添加一个删除按钮,可以通过自定义Admin类来实现。

自定义Admin类

首先,我们需要自定义一个Admin类,继承自admin.ModelAdmin。在这个Admin类中,我们可以定义我们想要显示的字段、过滤器、搜索字段等。在这个自定义的Admin类中,我们可以在列表中显示一个删除按钮,并在点击该按钮时删除对应的对象。

from django.contrib import admin
from .models import MyModel

class MyModelAdmin(admin.ModelAdmin):
    list_display = ['id', 'name', 'description', 'delete_button']

    def delete_button(self, obj):
        return '<a class="button" href="/admin/delete/{}/">Delete</a>'.format(obj.id)

    delete_button.allow_tags = True
    delete_button.short_description = 'Delete'

admin.site.register(MyModel, MyModelAdmin)

在上面的代码中,我们自定义了一个MyModelAdmin类,并指定了要显示的字段列表。在delete_button方法中,我们返回一个带有删除按钮的链接,并传入了要删除的对象的id。allow_tags表示该字段内容可以包含html标签,short_description表示该字段在Admin后台中的显示名称。

添加删除视图

接下来,我们需要添加一个视图来处理删除操作。在这个视图中,我们接收到需要删除对象的id,然后执行删除操作。

from django.shortcuts import render, redirect
from .models import MyModel

def delete_view(request, id):
    obj = MyModel.objects.get(id=id)
    obj.delete()
    return redirect('/admin/myapp/mymodel/')

在上面的代码中,我们定义了一个delete_view视图,接收到要删除的对象的id,并通过MyModel.objects.get(id=id)找到对应的对象,然后执行删除操作并重定向到Admin后台对应模型的列表页。

配置URL和Admin后台

最后,我们需要在urls.py中配置相应的URL,并在Admin后台注册我们自定义的Admin类。

from django.contrib import admin
from django.urls import path
from myapp.views import delete_view

urlpatterns = [
    path('admin/delete/<int:id>/', delete_view),
    path('admin/', admin.site.urls),
]

通过上面的步骤,我们就成功地给Django Admin后台添加了一个删除按钮。当在Admin后台查看对应模型的列表页时,可以看到每一行数据后面都有一个删除按钮,点击该按钮就可以直接删除该对象。

这种方式虽然简单,但是在实际项目中更推荐使用Django的Admin动作和批量操作来实现删除操作。因为直接在列表页添加删除按钮可能存在一定的安全风险,因此需要慎重考虑。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程