我正在学习 Django,需要一些帮助。
我需要在我的用户模型中包含一个额外的布尔字段(我相信数据库中的 auth_user 表),并在管理用户时将其显示在管理界面中,例如此图像中的员工状态字段...
127:0.0.1:8000/管理员/用户:
和...
127.0.0.1:8000/admin/auth/user/2/change/ :
我不确定如何处理这个问题。我知道我必须扩展 AbstractUser 模型,然后可能手动将该字段添加到数据库中,但是如何更新管理界面的视图、表单和模板的新字段?我是否必须为所有这些重写 django 管理源代码,还是有更简单的方法?
最好的方法是使用 User OneToOneField 创建新模型。例如
class UserProfile(models.Model):
user = models.OneToOneField(User)
phone = models.CharField(max_length=256, blank=True, null=True)
gender = models.CharField(
max_length=1, choices=(('m', _('Male')), ('f', _('Female'))),
blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
您可以在 User Model 或 UserProfile Model 中使用 django admin,并可以相应地显示 Admin 中的字段
我是这样做的:
注意:这应该在您创建新项目时完成。
向用户模型添加字段:-
模型.py:
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
gender = models.BooleanField(default=True) # True for male and False for female
# you can add more fields here.
Run Code Online (Sandbox Code Playgroud)
覆盖默认的用户模型:-
设置.py:
# the example_app is an app in which models.py is defined
AUTH_USER_MODEL = 'example_app.User'
Run Code Online (Sandbox Code Playgroud)
在管理页面上显示模型:-
管理.py:
from django.contrib import admin
from .models import User
admin.site.register(User)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16134 次 |
| 最近记录: |