如何解决使用 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 举报,一经查实,本站将立刻删除。