问题描述
我正在 Django 中使用 django-allauth 进行身份验证。
我在 account.models 中创建了一个自定义用户类来添加一个自定义字段 UserExtraFiledSignup ,我添加了图像字段以便用户可以在注册期间为其帐户上传个人资料照片,但我遇到了问题
我遇到的问题是用户创建帐户并上传照片时实际上没有上传我不知道是什么错误
编辑
我的应用 |模型.py:
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
profile_photo = models.ImageField(default='',upload_to='images/')
def __str__(self):
return self.username
我的应用 |表单.py:
class CustomSignupForm(SignupForm):
def __init__(self,*args,**kwargs):
super(CustomSignupForm,self).__init__(*args,**kwargs)
self.fields['profile_img'] = forms.FileField(required = False)
def save(self,request):
user = super(CustomSignupForm,self).save(request)
user.profile_img = self.cleaned_data.get('profile_img')
user.save()
return user
我的应用 |设置.py:
ACCOUNT_FORMS = {
'signup': 'blog_app.forms.CustomSignupForm',}
我点击迁移时出错
ERRORS: auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'User.groups'. HINT: Add or change a related_name argument to the deFinition for 'User.groups' or 'User.groups'. auth.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions' clashes with reverse accessor for 'User. user_permissions'. HINT: Add or change a related_name argument to the deFinition for 'User.user_permissions' or 'User.user_permissions'. blog_app.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'User.groups'. HINT: Add or change a related_name argument to the deFinition for 'User.groups' or 'User.groups'. blog_app.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions' clashes with reverse accessor for 'U ser.user_permissions'. HINT: Add or change a related_name argument to the deFinition for 'User.user_permissions' or 'User.user_permissions'.
错误是什么,如何修复?
解决方法
为什么要为单个字段创建模型?
您可以直接将其添加到您的 User
模型中:
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
profile_photo = models.ImageField(default='',upload_to='images/')
def __str__(self):
return self.username
您也不需要覆盖帐户适配器。您只需要一个好的CustomSignupForm
:
class CustomSignupForm(SignupForm):
def __init__(self,*args,**kwargs):
super(CustomSignupForm,self).__init__(*args,**kwargs)
self.fields['profile_img'] = forms.FileField(required = False)
def save(self,request):
user = super(CustomSignupForm,self).save(request)
user.profile_img = self.cleaned_data.get('profile_img')
user.save()
return user
这应该对你有用。