Django - 扩展用户配置文件不以 chenge 形式显示文件

问题描述

我想在 django 中扩展用户模型,添加新字段,当然能够通过管理页面对其进行管理。 我在 django 中创建了一个 CustomUser 模型扩展 AbstractUser 并添加了一些额外的字段,创建了一个 UserCustomCreateForm 和 UserCustomChangeForm 来管理创建和更改,然后注册一个 CustomUserAdmin 扩展 UserAdmin 添加两个表单。
在管理员中,创建新用户时似乎可以正常工作,但不幸的是,更改视图中没有显示新字段。

我做错了什么?

谢谢

这里是models.py

 users/models.py
# Create your models here.

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.db import models


class CustomUser(AbstractUser):
    # add additional fields in here
    address = models.CharField(max_length=50,null=True,verbose_name='Indirizzo')
    house_phone = models.CharField(max_length=20,verbose_name='Telefono')
    mobile_phone = models.CharField(max_length=20,verbose_name='Cellulare')

    def __str__(self):
        return self.first_name + ' ' + self.last_name

这里是表格


# users/forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm,UserChangeForm
from .models import CustomUser
from django import forms

class UserCustomCreateForm(UserCreationForm):

    class Meta(UserCreationForm):
        model = CustomUser
        fields = ('username','email','first_name','last_name','address','house_phone','mobile_phone')


class UserCustomChangeForm(UserChangeForm):

    class Meta:
        model = CustomUser
        fields = (
                  'username','mobile_phone')

这里是 admin.py

# users/admin.py
from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin
from .forms import UserCustomCreateForm,UserCustomChangeForm
from .models import CustomUser
from django.contrib.auth.forms import UserCreationForm,UserChangeForm


class CustomUserAdmin(UserAdmin):
    add_form = UserCustomCreateForm
    form = UserCustomChangeForm
    change_form = UserCustomChangeForm
    model = CustomUser

    add_fieldsets = (
     ( "Dati di Accesso",{
            'classes': ('wide',),'fields':('username','password1','password2',)
     }
     ),( "Informazioni Personali",{
        'classes': ('wide','fields': ( 'email','mobile_phone')
     } ),)
    list_display = ['email','username',]

admin.site.register(CustomUser,CustomUserAdmin)

解决方法

在您的 admin.py 文件代码中,将 add_fieldsets = [...] 更改为 fieldsets = [...]

fieldsets 定义了两个视图(添加、更改)的字段集。 add_fieldsets 只为添加视图定义结果。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...