首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何修改AbstractUser模型中的Emailfield以使其成为必需的电子邮件

如何修改AbstractUser模型中的Emailfield以使其成为必需的电子邮件
EN

Stack Overflow用户
提问于 2019-06-05 05:54:02
回答 1查看 279关注 0票数 1

如何在扩展AbstractUser时将邮件字段设置为必填?

我想知道如何重写AbstractUser的电子邮件字段模型来根据需要设置它。目前,我的表单列出了电子邮件字段,但没有按要求进行设置。默认情况下,不是所有的模型都是必需的吗?

在文档中,它展示了在创建超级用户时如何将字段设置为required的示例,但我不确定如何在不使用AbstractBaseUser的情况下从AbstractUser模型完成任务。

代码语言:javascript
复制
model.py

from django.db import models
from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    display_name = models.CharField(max_length=50, unique=True)
    bio = models.CharField(max_length=500, blank=True, null=True)
    authorization_code = models.CharField(max_length=20)


forms.py

from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser

class CustomUserCreationForm(UserCreationForm):

    class Meta (UserCreationForm):
        model = CustomUser
        fields = ('username', 'email', 'display_name', 'authorization_code')

class CustomUserChangeForm(UserChangeForm):

    class Meta:
        model = CustomUser
        fields = ('username', 'email', 'bio')


admin.py

from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin

from .forms import CustomUserCreationForm, CustomUserChangeForm
from .models import CustomUser

class CustomUserAdmin(UserAdmin):
    add_form = CustomUserCreationForm
    form = CustomUserChangeForm
    model = CustomUser
    list_display = ['email', 'username', 'display_name', 'bio']
    list_display_links = ('username', 'display_name')

    fieldsets = (
        (None, {'fields': ('username', 'display_name', 'email', 'bio', 'password')}),
        ('Permissions', {'fields': ('is_staff', 'is_active')}),
    )

    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'display_name', 'email', 'bio', 'password1', 'password2', 'is_staff', 'is_active')}
         ),
    )



admin.site.register(CustomUser, CustomUserAdmin)

解决方案:

代码语言:javascript
复制
# It was as simple as updating my CustomUser model as shown:

class CustomUser(AbstractUser):
    display_name = models.CharField(max_length=50, unique=True)
    bio = models.CharField(max_length=500, blank=True, null=True)
    authorization_code = models.CharField(max_length=20)
    email = models.EmailField(max_length=50, unique=True)
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56451825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档