我已经尝试了好几个小时并感到迷茫。我是django的新手,并尝试创建自定义用户模型。我的努力是我的用户模型不会显示在管理页面的“身份验证和授权”部分下。 Admin page pic
这是我的模型代码
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class User(AbstractUser):
first_name = models.TextField(max_length = 300)
last_name = models.TextField(max_length = 300)
这是我的admin.py文件的代码
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from orders.models import User
# Register your models here.
admin.site.register(User,UserAdmin)
这是我的settings.py文件的片段,我在其中添加了AUTH_USER_MODEL
AUTH_USER_MODEL='orders.User'
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'orders'
]
答案 0 :(得分:0)
您不应将自定义用户模型命名为 User 。它将与您要扩展的基本 User 模型有关。
要注意的重要一点是,如果您使用的是AbstractUser,则由于它们已经实现,因此不需要对其进行任何特殊处理,则无需覆盖用户名,first_name和last_name字段。
您的重构用户模型:
from django.contrib.auth import models
class MyUser(models.AbstractUser):
# Fields that you are not obliged to implement
# username = models.CharField(max_length=100)
# first_name = models.CharField(max_length=100)
# last_name = models.CharField(max_length=100)
groups = None
user_permissions = None
def __str__(self):
return self.username
用户管理员:
@admin.register(MyUser)
class MyUserAdmin(admin.ModelAdmin):
list_display = ['username']
或
admin.site.register(MyUser, MyUserAdmin)
在settings.py中,您可以删除AUTH_USER_MODEL,除非您是从头开始创建用户模型,否则不必这样做。