You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django Admin中实现默认用户页样式的双窗选择权限表单

Django Admin实现双选择框多对多字段控件方案

你需要使用Django Admin内置的FilteredSelectMultiple小部件实现所需的双窗口选择效果,修改代码步骤如下:

  1. 首先导入所需依赖
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
  1. 自定义Role的管理表单,为permissions字段指定小部件
class RoleAdminForm(forms.ModelForm):
    class Meta:
        model = Role
        fields = "__all__"
        widgets = {
            "permissions": FilteredSelectMultiple(_("权限"), False)
        }
  1. 将自定义表单绑定到你的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:18:02