Django 中的用户模型自定义

User Model Customisation in Django

我想在 admin.py 中编辑用户模型,但我不知道该怎么做? Here is the Image of Admin Panel of User Model

有人可以帮助我吗?我想在用户模型中添加一些自定义字段。

使用 'AbstractUser' 模型扩展 Django 中的预定义用户模型。

然后我们可以轻松地在用户模型中添加一些字段或添加更多信息。

from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    bio = models.TextField(max_length=500, blank=True)
    location = models.CharField(max_length=30, blank=True)
    birth_date = models.DateField(null=True, blank=True)

然后我们必须更新 settings.py 定义 AUTH_USER_MODEL 属性。

AUTH_USER_MODEL = 'core.User'

关注此 link 了解更多信息:-https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html

您可以通过从 django 扩展 AbstractUser 来做到这一点。

# models.py

from django.contrib.auth.models import AbstractUser
from django.db import models
from django.utils.translation import gettext_lazy as _


class User(AbstractUser):
    EMAIL_FIELD = 'email'
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username']

    email = models.EmailField(
        _('email address'),
        unique=True,
        blank=True
    )
    cellphone = models.CharField(
        _('cell phone'),
        max_length=20,
        null=True, blank=True
    )

那么您还需要在设置中指定此自定义用户模型。指定您刚刚创建的用户模型的路径。 <app_name>.<ModelClassName>

# settings.py

AUTH_USER_MODEL = 'users.User'

最后,您的管理员还必须继承 Django 默认值 UserAdmin,如果您想节省时间来创建他们已经创建的一些方法的所有麻烦。现在您可以按照自己的方式编辑用户管理员,还可以利用所有 现有的管理功能。

# admin.py

from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin as OrigUserAdmin

User = get_user_model()


@admin.register(User)
class UserAdmin(OrigUserAdmin):
  list_display = (
    'id', 'first_name', 'last_name', 'username', 'email', 'is_active'
  )