我正在尝试扩展William Vincent在下面发布的教程:
https://wsvincent.com/django-custom-user-model-tutorial/
我正在尝试通过从django.contrib.auth.models导入AbstractUser来向扩展的CustomerUser模型添加新字段:
users/models.py:
from django.db import models
from django.contrib.auth.models import AbstractUser, UserManager
class CustomUserManager(UserManager):
pass
class CustomUser(AbstractUser):
bio = models.TextField(max_length=500, blank=True)
objects = CustomUserManager()
def __str__(self):
return self.username
我在上述模型中添加了“bio”字段,但是当我通过Django管理门户访问用户时,我没有看到与Django默认提供的管理员字段打包在一起的新的“bio”字段。 例如:个人信息:名字,姓氏,电子邮件地址等。我的CustomUser应用程序已像上面提到的教程那样注册到管理员门户。
作为自己的测试,我能够成功地显示生物字段(按预期显示为空白)在我的list_display中。 重申一下,我的问题是当我单击编辑用户时,没有更新此字段的方法。 好消息是django捕捉到了我新的“bio”字段的迁移。
from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin
from .forms import CustomUserCreationForm, CustomUserChangeForm
from .models import CustomUser
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = CustomUserChangeForm
model = CustomUser
list_display = ['username', 'email','is_staff', 'bio']
admin.site.register(CustomUser, CustomUserAdmin)
我的猜测是我正在寻找的解决方案与编辑管理表单有关。以下是我在用户应用程序中所拥有的内容(来自教程)。
users/forms.py:
from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm):
model = CustomUser
fields = ('username', 'email')
class CustomUserChangeForm(UserChangeForm):
class Meta:
model = CustomUser
fields = ('username', 'email')
不可否认,我对刚才的form.py文件中发生的事情并没有很好的理解。我怀疑它可能与我通过管理门户访问的实际用户编辑表单无关,所以我可能只需要弄清楚如何对默认的Django管理应用程序进行更改。
像往常一样,非常感谢您的帮助!
fieldsets
对象显然会覆盖默认字段,这些字段由例如个人信息
、权限
、重要日期
等结构组成... 怎样才能简单地添加一个要在此页面上更改的字段,而不删除现有的结构和字段呢? - sc28`fieldsets = UserAdmin.fieldsets + ( (None, {'fields': ('bio',)}), )`
- Quitiweb