自定义用户修改表单 django 管理站点

customize user modification form django admin site

当您 create/modify 来自 django 管理站点的用户时,您将拥有此界面:

我的项目很简单,因为我没有组,每个员工用户都可以拥有超级用户状态。这就是为什么我不想显示超级用户状态选项,组和用户权限。如何屏蔽此表单的这一部分并断言所有员工用户也是超级用户。

此表格生成于此:django/contrib/admin/templates/admin/change_form.html

尤其是在这一行:

{% block field_sets %}
{% for fieldset in adminform %}
  {% include "admin/includes/fieldset.html" %}
{% endfor %}
{% endblock %}

所以我需要修改 adminform 变量,但不知道如何。

如有任何帮助,我们将不胜感激。

提前致谢!

我认为您需要修改该模板。所以你看看

django/contrib/admin/templates/admin/auth/user/

这应该包含几个用于修改用户的模板。

您可以通过将它们复制到 TEMPLATE_DIR/admin/auth 然后更改它们来覆盖它们。

还有,看@django/contrib/admin/templates/admin/change_form.html

这是您要复制和更改的文件(到 TEMPLATE_DIR/admin/auth/user/)以覆盖该模型的更改表单。

这是怎么做的。在你的 admin.py 文件中定义一个新的用户管理员,就像你想要的字段集一样:

from django.contrib import admin
from django.utils.translation import gettext, gettext_lazy as _

# Register your models here.
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User, Group

# Define a new User admin
class UserAdmin(UserAdmin):
    fieldsets = (
        (None, {'fields': ('username', 'password')}),
        (_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
        (_('Permissions'), {
            'fields': ('is_active', 'is_staff', 'is_superuser'),
        }),
        (_('Important dates'), {'fields': ('last_login', 'date_joined')}),
    )


# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, UserAdmin)

# don't show groups
admin.site.unregister(Group)