使用 django-allauth 将 FileField 添加到自定义注册表单

问题描述 投票:0回答:2

我有以下自定义注册表单(经过简化,无需 my_file 即可完美运行):

class SignupForm(forms.Form):
    home_phone = forms.CharField(validators=[phone_regex], max_length=15)
    my_file = forms.FileField()

    def signup(self, request, user):
        new_user = ReqInfo(
            user=user,
            home_phone=self.cleaned_data['home_phone'],
            my_file=my_file,
        )
        new_user.save()

在 models.py 中:

class ReqInfo(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True)
    home_phone = models.CharField(
        validators=[phone_regex], max_length=15)
    my_file = models.FileField(upload_to='uploads/directory/', validators=[resume_file_validator], blank=True, null=True)

我的问题:

当我在 myurl/accounts/signup 中添加用户时,它告诉我 my_file 字段是必需的,即使我选择了一个文件。

python django django-forms django-allauth django-1.8
2个回答
0
投票

allauth使用的signup.html模板没有

enctype="multipart/form-data"

添加后,效果就像魅力一样。


0
投票

您还可以使用 django 信号创建 post_save 信号,以通知新用户何时保存到用户模型中。 当收到信号时,您可以创建 ReqInfo 实例并保存它。 *覆盖 allauth 注册表单以包含文件字段

© www.soinside.com 2019 - 2024. All rights reserved.