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会自动显示用户模型的一些默认字段,如username、email、password等。然而,对于自定义用户模型中的其他字段,需要进行额外的配置才能在Django admin界面上显示出来。
为了在Django admin中显示自定义用户模型字段,我们需要进行以下步骤:
- 创建一个自定义的用户模型管理类,继承自
UserAdmin。 - 在管理类中定义一个
fieldsets属性,用于指定要在Django admin中显示的字段。 - 在
UserAdmin类的注册过程中,将自定义的用户模型和自定义的用户模型管理类关联起来。
以下是一个示例代码,展示了如何在Django admin中显示自定义用户模型的first_name和last_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)
在上述示例中,我们首先导入了admin和UserAdmin类,然后定义了一个自定义的用户模型管理类CustomUserAdmin,继承自UserAdmin。在fieldsets属性中,我们通过UserAdmin.fieldsets获取默认的字段配置,然后在其基础上添加了first_name和last_name字段的配置。最后,我们使用admin.site.register()将自定义用户模型User与自定义用户模型管理类CustomUserAdmin进行关联。
完成上述步骤后,我们可以重新运行Django项目,并登录到Django admin界面。在用户详情页中,我们将能够看到自定义用户模型的first_name和last_name字段。
总结
通过本文,我们了解了如何在Django admin中显示自定义用户模型字段。通过自定义用户模型,并在自定义的用户模型管理类中添加相应的字段配置,我们可以方便地在Django admin界面上显示和管理自定义的用户模型字段。这在满足特定业务需求的同时,也为我们提供了更多的灵活性和定制化能力。
极客笔记