Django rest framework 如何自定义RegisterSerializer以保存新用户的图像

Django rest framework 如何自定义RegisterSerializer以保存新用户的图像,django-rest-framework,django-rest-auth,Django Rest Framework,Django Rest Auth,我正在使用django rest auth,我想添加对我自己的用户模型的注册以及保存用户图像的可能性。所以我添加了allauth并创建了我自己的RegisterSerializer,正如文档中提到的那样。只要我不引入ImageField来保存用户图像,它就可以工作 这是我的自定义序列化程序 class MyRegisterSerializer(serializers.Serializer): username = serializers.CharField( max_le

我正在使用django rest auth,我想添加对我自己的用户模型的注册以及保存用户图像的可能性。所以我添加了allauth并创建了我自己的RegisterSerializer,正如文档中提到的那样。只要我不引入ImageField来保存用户图像,它就可以工作

这是我的自定义序列化程序

class MyRegisterSerializer(serializers.Serializer):
    username = serializers.CharField(
        max_length=get_username_max_length(),
        min_length=allauth_settings.USERNAME_MIN_LENGTH,
        required=allauth_settings.USERNAME_REQUIRED,
    )
    email = serializers.EmailField(required=allauth_settings.EMAIL_REQUIRED)
    password1 = serializers.CharField(write_only=True)
    password2 = serializers.CharField(write_only=True)
    first_name = serializers.CharField(write_only=True)
    last_name = serializers.CharField(write_only=True)
    image = serializers.ImageField(max_length=None, use_url=False)

    def validate_username(self, username):
        username = get_adapter().clean_username(username)
        return username

    def validate_email(self, email):
        email = get_adapter().clean_email(email)
        if allauth_settings.UNIQUE_EMAIL:
            if email and email_address_exists(email):
                raise serializers.ValidationError(
                    _("A user is already registered with this e-mail address.")
                )
        return email

    def validate_image(self, image):
        image = get_adapter().clean_image(image)

    def validate_password1(self, password):
        return get_adapter().clean_password(password)

    def validate(self, data):
        if data["password1"] != data["password2"]:
            raise serializers.ValidationError(
                _("The two password fields didn't match.")
            )
        return data

    def custom_signup(self, request, user):
        pass

    def get_cleaned_data(self):
        return {
            "username": self.validated_data.get("username", ""),
            "password1": self.validated_data.get("password1", ""),
            "email": self.validated_data.get("email", ""),
            "first_name": self.validated_data.get("first_name", ""),
            "last_name": self.validated_data.get("last_name", ""),
            "image": self.validated_data.get("image", ""),
        }

    def save(self, request):
        adapter = get_adapter()
        user = adapter.new_user(request)
        self.cleaned_data = self.get_cleaned_data()
        adapter.save_user(request, user, self)
        self.custom_signup(request, user)
        setup_user_email(request, user, [])
        return user
这是我的用户模型

class User(AbstractBaseUser, PermissionsMixin):
    username = models.CharField(max_length=30, unique=True)
    email = models.EmailField(_("email address"), unique=True)
    first_name = models.CharField(max_length=30, blank=True)

    USERNAME_FIELD = "username"
    REQUIRED_FIELDS = []

    objects = UserManager()

    last_name = models.CharField(max_length=30, blank=True)
    image = models.ImageField(upload_to="app/static/app/", blank=True)
    is_superuser = models.BooleanField(_("superuser"), default=False, blank=True)
    is_staff = models.BooleanField(_("staff"), default=False, blank=True)
    is_active = models.BooleanField(_("staff"), default=True)

    def __str__(self):
        return "ID:" + str(self.pk) + " User:" + self.username
当我尝试注册一个图像时,我得到一个

错误请求:/rest身份验证/注册/

任何想法都将不胜感激。提前谢谢