python - 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, null=True, verbose_name='Telefono')
mobile_phone = models.CharField(max_length=20, null=True, 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', 'email', 'first_name', 'last_name',
'address', 'house_phone', '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', 'first_name', 'last_name',
'address', 'house_phone', 'mobile_phone')
} ),
)
list_display = ['email', 'username',]
admin.site.register(CustomUser, CustomUserAdmin)
解决方案
在您的 admin.py 文件代码中更改add_fieldsets = [...]
为fieldsets = [...]
.
fieldsets
定义两个视图的字段集(添加、更改)。add_fieldsets
仅为添加视图定义结果。
推荐阅读
- android - 使用 Flutter 从 android 抽屉菜单打开页面后如何刷新主页
- c++ - 做一个循环“慢下来”
- c++ - 使用 map<>.emplace 时出现错误“没有匹配的函数调用”
- python - Python Selenium - 从列表框中获取 url 而不是单击它
- excel-formula - 如何将每日级别的日期数据与 Excel 中的每小时级别的日期数据匹配?
- javascript - 正则表达式在 Javascript 中验证用户名
- c++ - 'operator==' 不匹配(操作数类型为 'hockey::Personne* const' 和 'const hockey::Personne')
- r - 如何将斐波那契数列中的所有项保存到“n”
- android - 使用 `flutter install` 在 Android 上更新 Flutter App
- bots - 如何以编程方式向@BotFather 发送消息?