【问题标题】:how to handle Image with serializer如何使用序列化程序处理图像
【发布时间】:2019-05-29 17:05:09
【问题描述】:

我在上传用户个人资料中的图片时遇到了一些问题,它已经从用户那里扩展了,当我想通过邮递员上传图片时它返回空值

序列化器:

class UserProfileSerializer(serializers.ModelSerializer):
    user = UserSerializer()

    class Meta:
        model = UserProfile
        fields = ('user', 'bio', 'avatar')

    def validate(self, data):
        print(data)
        self.context['avatar'] = self.context['request'].FILES.get('avatar')
        return data

    def create(self, validated_data):
        user_data = validated_data.pop('user')
        user = UserSerializer.create(UserSerializer(), validated_data=user_data)

        validated_data['avatar'] = self.context['avatar']
        validated_data['user'] = user

        profile = UserProfile.objects.create(**validated_data)
        profile.bio = validated_data["bio"]

        profile.save()
        return profile

型号:

class UserProfile(models.Model):
    user = models.OneToOneField(User, primary_key=True, related_name='profile', on_delete=True)
    bio = models.CharField(max_length=50, blank=True)
    avatar = models.ImageField(upload_to="media", blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.user.username

【问题讨论】:

    标签: django django-rest-framework django-generic-views


    【解决方案1】:

    我找到了解决方案,django中的图片在request.FILES中存储在内存中

    userprofile = UserProfile.objects.create(user=user, bio=validated_data.pop('bio'), user_type=type) images_data = self.context.get('view').request.FILES for image_data in images_data.values(): ProfileImage.objects.create(userprofile=userprofile, image=image_data, user_type=type)

    【讨论】:

      猜你喜欢
      • 2012-12-08
      • 1970-01-01
      • 2016-06-23
      • 2021-06-17
      • 2013-11-26
      • 2018-07-27
      • 2011-01-07
      • 2017-01-28
      • 2020-01-24
      相关资源
      最近更新 更多