微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 google allauth 身份验证注册时出现 Django 完整性错误

如何解决使用 google allauth 身份验证注册时出现 Django 完整性错误

我在尝试通过 google 身份验证注册新用户时遇到完整性错误。不过,我的普通用户注册表可以正常工作。

这是我的模型:

Class User (AbstractUser)
    objects = CustomUserManager()
    email = models.EmailField(unique=True,blank=False)
    username = models.CharField(max_length=100,unique=True,help_text='required.')
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)
    date_joined = models.DateField(default=timezone.Now)
    birthdate = models.DateField(default=timezone.Now)
    slug = models.SlugField(max_length=50,null=True,blank=True)
    gender = models.CharField(
        max_length=20,choices=GENDER_OPTIONS,blank=False,default='')
    country = CountryField(default='US')

    USERNAME_FIELD = 'email'
    required_FIELDS = ['username']

    def save(self,*args,**kwargs):
        if not self.slug:
            value = self.username
            self.slug = slugify(value,allow_unicode=True)
        super().save()
    

这是我的设置:

ACCOUNT_SIGNUP_FORM_CLASS = "core.forms.CustomUserCreationForm"
SOCIALACCOUNT_AUTO_SIGNUP = False
ACCOUNT_EMAIL_required=True
SITE_ID = 1
SOCIALACCOUNT_PROVIDERS = {
    'google': {
         'ScopE':['profile','email',],'AUTH_ParaMS':{'access_type':'online',}
     }
}

表格:

class CustomUserCreationForm(UserCreationForm):
def __init__(self,**kwargs):
    super().__init__(*args,**kwargs)
    self.fields['username'].widget.attrs.update({'placeholder': 'Enter Username'})
    self.fields['email'].widget.attrs.update({'placeholder': 'Enter Email'})
    self.fields['password1'].widget.attrs.update({'placeholder': 'Enter password','label': ''})
    self.fields['password2'].widget.attrs.update({'placeholder': 'Repeat your password'})

class Meta(UserCreationForm):
    model = User
    fields = ('email','username','gender','country','password1','password2')

    help_texts = {
        'email': 'required','gender': 'optional','country': 'required'
    }

    labels = {
            'email': '','username': '','gender': '','password1': '','password2': '','country' :'Your location',}

def clean_username(self):
    username = self.cleaned_data['username']
    print(username)
    if ' ' in username:
        raise forms.ValidationError("Username may not contain spaces.")
    if '@' in username or '*' in username or '+' in username or '=' in username or '-' in username \
    or '^' in username or '$' in username or '!' in username or '%' in username:
        raise forms.ValidationError("Username may not contain special characters.")
    return username

def save(self,commit=True):
    user = super(UserCreationForm,self).save(commit=False)
    user.username = self.cleaned_data['username']
    user.email = self.cleaned_data['email']
    if commit:
        user.save()
    return user

当我使用常规表单(无 Google 身份验证)注册时,它工作正常,但是当我尝试使用 Google 身份验证注册用户时,我收到此错误

/accounts/social/signup/ 处的完整性错误 关系“core_user”的“date_joined”列中的空值违反了非空约束 详细信息:失败的行包含 (5,pbkdf2_sha256$216000$hwSDRIv3oMxk$xVIeN30XF/gGRw5CXcVajFAScRhPq9...,null,f,Yeager,test25@gmail.com,test25,test),US25 null .

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。