Django自定义用户模型未显示在管理页面的“身份验证和授权”下

时间:2020-06-02 20:17:10

标签: python django

我已经尝试了好几个小时并感到迷茫。我是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'

]

1 个答案:

答案 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,除非您是从头开始创建用户模型,否则不必这样做。