- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在浏览 django for beginners book ,测试第 8 章中有关 Custom user model 的代码。目标是通过子类化 AbstractUser
模型在 auth 用户模型中添加字段 age
。
首先我们在models.py
中创建CustomUser
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
age = models.PositiveIntegerField(null=True, blank=True)
然后在forms.py
中创建CustomUserCreationFrom
和CustomUserChangeFrom
:
from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser
class CustomUserCreationFrom(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = CustomUser
fields = UserCreationForm.Meta.fields + ('age',)
class CustomUserChangeFrom(UserChangeForm):
class Meta(UserChangeForm.Meta):
model = CustomUser
fields = UserChangeForm.Meta.fields
最后,admin.py
中的 CustomUserAdmin
:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .forms import CustomUserCreationFrom, CustomUserChangeFrom
from .models import CustomUser
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationFrom
form = CustomUserChangeFrom
model = CustomUser
list_display = ['username', 'email', 'age', 'is_staff',]
admin.site.register(CustomUser, CustomUserAdmin)
当然,还要在 settings.py
中告诉 django 我们的自定义身份验证模型:
AUTH_USER_MODEL = 'users.CustomUser'
<小时/>
以 super 用户身份登录,尝试添加新用户时,创建表单中没有字段age
。
我错过了什么吗?
最佳答案
感谢 Michael Herman 的回答: https://testdriven.io/blog/django-custom-user-model/
在 admin.py
的 CustomUserAdmin
中,您必须声明一个 fieldsets
:
from django.contrib import admin
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 = ('email', 'is_staff', 'is_active',)
list_filter = ('email', 'is_staff', 'is_active',)
fieldsets = (
(None, {'fields': ('email', 'password')}),
('Permissions', {'fields': ('is_staff', 'is_active')}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('email', 'password1', 'password2', 'is_staff', 'is_active')}
),
)
search_fields = ('email',)
ordering = ('email',)
admin.site.register(CustomUser, CustomUserAdmin)
关于python - 将表单字段添加到 django 管理面板中的自定义用户模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54341927/
我尝试通过正则表达式将文本中的单引号更改为双引号。 (单字)示例:我走了。 You gona fly to planet 'Ziqtos' => 我需要在 I'm 中保留单引号,并在 You gona
我正在构建一个 API,其中大部分将包含 JSON 和 HTML 内容。但是一些非常具体的端点只呈现 true 或 false,并且还在 POST 中接受 true 或 false。这是请求或响应的整
我是一名优秀的程序员,十分优秀!