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

如何让 django-all auth 将数据传递给自定义用户模型

如何解决如何让 django-all auth 将数据传递给自定义用户模型

我正在 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

这应该对你有用。

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