Django:在Django admin中未显示自定义用户模型字段

Django:在Django admin中未显示自定义用户模型字段

在本文中,我们将介绍如何在Django admin中显示自定义用户模型字段的方法,并提供示例说明。

阅读更多:Django 教程

了解Django的自定义用户模型

在使用Django进行Web开发时,我们通常会使用其内置的用户认证系统。然而,有时候我们需要对用户模型进行自定义,以满足特定的业务需求。Django提供了一个用于扩展用户模型的接口,可以让我们添加自己的额外字段和方法。

要创建自定义用户模型,我们需要在项目中定义一个继承自AbstractBaseUser的模型,并设置一些必要的属性。我们还需要定义一个继承自BaseUserManager的模型管理器,以处理用户的创建和验证等功能。

以下是一个简单的自定义用户模型的示例:

from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
from django.db import models

class UserManager(BaseUserManager):
    def create_user(self, email, password=None, **extra_fields):
        if not email:
            raise ValueError('The Email field must be set')
        email = self.normalize_email(email)
        user = self.model(email=email, **extra_fields)
        user.set_password(password)
        user.save()
        return user

class User(AbstractBaseUser):
    email = models.EmailField(unique=True)
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    objects = UserManager()

    def get_full_name(self):
        return f"{self.first_name} {self.last_name}"

    def get_short_name(self):
        return self.first_name

在Django admin中显示自定义用户模型字段

默认情况下,Django admin会自动显示用户模型的一些默认字段,如usernameemailpassword等。然而,对于自定义用户模型中的其他字段,需要进行额外的配置才能在Django admin界面上显示出来。

为了在Django admin中显示自定义用户模型字段,我们需要进行以下步骤:

  1. 创建一个自定义的用户模型管理类,继承自UserAdmin
  2. 在管理类中定义一个fieldsets属性,用于指定要在Django admin中显示的字段。
  3. UserAdmin类的注册过程中,将自定义的用户模型和自定义的用户模型管理类关联起来。

以下是一个示例代码,展示了如何在Django admin中显示自定义用户模型的first_namelast_name字段:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User

class CustomUserAdmin(UserAdmin):
    fieldsets = UserAdmin.fieldsets + (
        ('Personal info', {'fields': ('first_name', 'last_name')}),
    )

admin.site.register(User, CustomUserAdmin)

在上述示例中,我们首先导入了adminUserAdmin类,然后定义了一个自定义的用户模型管理类CustomUserAdmin,继承自UserAdmin。在fieldsets属性中,我们通过UserAdmin.fieldsets获取默认的字段配置,然后在其基础上添加了first_namelast_name字段的配置。最后,我们使用admin.site.register()将自定义用户模型User与自定义用户模型管理类CustomUserAdmin进行关联。

完成上述步骤后,我们可以重新运行Django项目,并登录到Django admin界面。在用户详情页中,我们将能够看到自定义用户模型的first_namelast_name字段。

总结

通过本文,我们了解了如何在Django admin中显示自定义用户模型字段。通过自定义用户模型,并在自定义的用户模型管理类中添加相应的字段配置,我们可以方便地在Django admin界面上显示和管理自定义的用户模型字段。这在满足特定业务需求的同时,也为我们提供了更多的灵活性和定制化能力。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程