首页 > 解决方案 > 我如何使用 img_id 在 post 方法中发送图像模型中的数据来编辑图像

问题描述

  1. 如何使用 post 方法编辑图像
  2. post 方法而不是 put 方法
  3. 以表单数据而不是 url 发送 pk
  4. 整体看起来比较复杂的方法

标签: pythondjango-rest-frameworkdjango-views

解决方案


问题的完整指南

models.py

class UploadImage(models.Model):

img_id = models.AutoField(primary_key=True)
user_id = models.ForeignKey(User, related_name='img', on_delete=models.CASCADE)
image = models.ImageField(upload_to='images/')
like_choice =[
    ('0','0'),
    ('1','1')
]
is_liked = models.CharField(max_length=255, choices = like_choice, default='0')
def __str__(self):
    return str(self.image)

serializers.py

class EditImageSerializer(serializers.ModelSerializer):

    class Meta:
        model = UploadImage
        fields = ['img_id','user_id','image','is_liked']

views.py

class EditImageAPIView(APIView):

    serializer_class = EditImageSerializer

    def post(self, request):
        img_id = request.data.get('img_id')

        editobj = UploadImage.objects.get(img_id=img_id)
        serializer = EditImageSerializer(editobj, data=request.data, context={'request': request})
        if serializer.is_valid():
            serializer.save()
            return Response({
                'status' : True,
                'message' : 'Image Edited Successfully',
                'data' : serializer.data
            },status=status.HTTP_200_OK)
            
        return Response({
            'status' : 'False',
            'message' : 'Error! Image with this id does not exist!'
        }, status = status.HTTP_400_BAD_REQUEST) 

urls.py

    url(r'^edit_image', EditImageAPIView.as_view(), name='edit image without pk'),

推荐阅读