0

我想编辑用户模型,admin.py但我不知道该怎么做? 这是用户模型的管理面板的图像

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

4

2 回答 2

2

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

# 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'

UserAdmin最后,如果您想省去创建他们已经创建的一些方法的所有麻烦,您的管理员还必须从 Django default 继承。现在,您还可以利用所有现有的管理员功能,以您想要的方式编辑用户管理员。

# 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'
  )
于 2020-03-04T12:58:26.383 回答
1

使用“AbstractUser”模型在 Django 中扩展预定义用户模型。

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

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)

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

AUTH_USER_MODEL = 'core.User'

点击此链接了解更多信息:- https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html

于 2020-03-04T11:19:44.293 回答