【发布时间】:2021-06-18 14:35:53
【问题描述】:
我正在编写一个简单的应用程序,我对 Django 用户模型非常满意,除了我希望用户电子邮件是唯一且必填字段。 我已经开发了一个解决方案,但我想知道我是否遗漏了什么。
a) 如果您认为以下解决方案中缺少某些内容,请告诉我
b) 如果您认为自己有更好的解决方案,请分享
这就是我所做的
- 创建了自定义用户模型
# customers/models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
email = models.EmailField(verbose_name='Email', unique=True, blank=False, null=False)
EMAIL_FIELD = 'email'
REQUIRED_FIELDS = ['email']
-
将 AUTH_USER_MODEL = 'customers.User' 添加到 settings.py
-
更改了对用户模型的引用:
User = get_user_model()
- 修改了 admin.py 以便能够使用 Django admin 添加用户。
# customers/admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth import get_user_model
User = get_user_model()
class CustomUserAdmin(UserAdmin):
list_display = ('username', 'email', 'is_staff')
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'email', 'password1', 'password2'),
}),
)
admin.site.register(User, CustomUserAdmin)
【问题讨论】:
-
这能回答你的问题吗? Make User email unique django
-
不完全是,我想要一个最低限度的解决方案,以确保唯一的电子邮件和不损坏的 django 身份验证系统。
-
最低限度是确保所有用户创建都使用相同的表单,并且该表单对
User表进行查询,以确保表单中email字段的值是唯一的数据库。
标签: django django-models django-users