如何在Django Admin中实现默认用户页样式的双窗选择权限表单
Django Admin实现双选择框多对多字段控件方案
你需要使用Django Admin内置的FilteredSelectMultiple小部件实现所需的双窗口选择效果,修改代码步骤如下:
- 首先导入所需依赖
from django import forms from django.contrib import admin from django.contrib.admin.widgets import FilteredSelectMultiple from django.utils.translation import gettext_lazy as _ # 引入你自己定义的Role模型 from .models import Role
- 自定义Role的管理表单,为permissions字段指定小部件
class RoleAdminForm(forms.ModelForm): class Meta: model = Role fields = "__all__" widgets = { "permissions": FilteredSelectMultiple(_("权限"), False) }
- 将自定义表单绑定到你的RoleAdmin配置中
class RoleAdmin(admin.ModelAdmin): # 绑定自定义表单 form = RoleAdminForm list_display = ("name", ) fieldsets=( (None, {"fields": ("name", )}), (_("Role Permissions"), { "fields": ("permissions", ), }), ) # 注册模型到Admin admin.site.register(Role, RoleAdmin)
补充说明
FilteredSelectMultiple是Django Admin内置的专用小部件,默认用户管理页的多对多字段就是用该控件实现,无需额外引入第三方静态资源,Admin会自动加载所需的JS和CSS。- 若修改后控件样式/交互异常,检查是否自定义了Admin的
Media配置,确保没有排除该控件所需的静态资源即可。
内容的提问来源于stack exchange,提问作者LSD
相关产品推荐
相关产品推荐

