Skip to main content
 首页 » 编程设计

python之Django rest framework 图片上传错误

2024年08月16日47grandyang

这是我的 UserProfile 模型,

class UserProfile(models.Model): 
    user = models.OneToOneField(User, related_name='profile', on_delete=models.CASCADE, ) 
    badge = models.ImageField(upload_to='media/badges/', null=True) 
    reputation = models.IntegerField(default=0) 
    status = models.CharField(max_length=255, null=True, blank=True) 
    thumbnail = models.ImageField(upload_to='media/user/', blank=True, null=True) 

这是Serializer类,

class UserProfileSerializer(serializers.ModelSerializer): 
    thumbnail = serializers.ImageField(max_length=None, use_url=True) 
 
    class Meta: 
        model = models.UserProfile 
        fields = ('badge', 'reputation', 'status', 'thumbnail',) 

我更新图像的 API 如下所示,

class CreateUpdateUserThumbnail(views.APIView): 
 
    def post(self, request, **kwargs): 
        try: 
            user = User.objects.get(id=kwargs.get('user_id')) 
        except User.DoesNotExist: 
            return Response({"Error": "User does not exist"}, status=status.HTTP_404_NOT_FOUND) 
        request.data['user_id'] = user.id 
        serializer = UserProfileSerializer(data=request.data) 
        if serializer.is_valid(): 
            serializer.save() 
            return Response(serializer.data, status=status.HTTP_201_CREATED) 
        else: 
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

这是我尝试使用 POSTMAN 上传图片时遇到的错误。

return Database.Cursor.execute(self, query, params) 
django.db.utils.IntegrityError: NOT NULL constraint failed: bouncer_userprofile.user_id 

如何将 user_id 与序列化程序数据相关联?

请您参考如下方法:

request.data是immutable所以你应该先创建副本:

data = request.data.copy() 
data['user_id'] = user.id 
serializer = UserProfileSerializer(data=data)