tar*_*lah 3 python django django-admin django-custom-user
我正在阅读django 初学者书籍,\xc2\xa0 测试第 8 章中有关自定义用户模型的代码。目标是age通过对模型进行子类化来在 auth 用户模型中添加该字段AbstractUser。
首先我们创建CustomUser出models.py
from django.db import models\nfrom django.contrib.auth.models import AbstractUser\n\nclass CustomUser(AbstractUser):\n age = models.PositiveIntegerField(null=True, blank=True)\nRun Code Online (Sandbox Code Playgroud)\n\n然后创建CustomUserCreationFrom并CustomUserChangeFrom在forms.py:
from django import forms\nfrom django.contrib.auth.forms import UserCreationForm, UserChangeForm\n\nfrom .models import CustomUser\n\nclass CustomUserCreationFrom(UserCreationForm):\n class Meta(UserCreationForm.Meta):\n model = CustomUser\n fields = UserCreationForm.Meta.fields + (\'age\',)\n\nclass CustomUserChangeFrom(UserChangeForm):\n class Meta(UserChangeForm.Meta):\n model = CustomUser\n fields = UserChangeForm.Meta.fields\nRun Code Online (Sandbox Code Playgroud)\n\n最后,CustomUserAdmin在admin.py:
from django.contrib import admin\nfrom django.contrib.auth.admin import UserAdmin\n\nfrom .forms import CustomUserCreationFrom, CustomUserChangeFrom\nfrom .models import CustomUser\n\nclass CustomUserAdmin(UserAdmin):\n add_form = CustomUserCreationFrom\n form = CustomUserChangeFrom\n model = CustomUser\n list_display = [\'username\', \'email\', \'age\', \'is_staff\',]\n\nadmin.site.register(CustomUser, CustomUserAdmin)\nRun Code Online (Sandbox Code Playgroud)\n\n当然,还要告诉 django 我们的自定义身份验证模型settings.py:
AUTH_USER_MODEL = \'users.CustomUser\'\nRun Code Online (Sandbox Code Playgroud)\n\nage以超级用户身份登录,当尝试添加新用户时,创建表单中没有字段。
我错过了什么吗?
\n感谢 Michael Herman 的回答: https://testdriven.io/blog/django-custom-user-model/
在你必须声明一个CustomUserAdmin:admin.pyfieldsets
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3413 次 |
| 最近记录: |