无法通过图像字段更新模型,而无法通过dango rest框架传递图像文件

如何解决无法通过图像字段更新模型,而无法通过dango rest框架传递图像文件

使用partial_update,尝试在不提供图像文件的情况下使用图像字段更新模型,无论我尝试多少,都会遇到此错误

'File "C:\Users\User\.virtualenvs\lib\site-packages\rest_framework\views.py",line 502,in dispatch
    response = handler(request,*args,**kwargs)
  File "C:\Users\User\Documents\sourcecode\project\app\api.py",line 761,in partial_update
    serializer.save()
  File "C:\Users\User\.virtualenvs\lib\site-packages\rest_framework\serializers.py",line 207,in save
    self.instance = self.update(self.instance,validated_data)
  File "C:\Users\User\.virtualenvs\lib\site-packages\rest_framework\serializers.py",line 992,in update
    instance.save()
  File "C:\Users\User\.virtualenvs\lib\site-packages\django\db\models\base.py",line 745,in save
    self.save_base(using=using,force_insert=force_insert,File "C:\Users\User\.virtualenvs\lib\site-packages\django\db\models\base.py",line 782,in save_base
    updated = self._save_table(
  File "C:\Users\User\.virtualenvs\lib\site-packages\django\db\models\base.py",line 861,in _save_table
    values = [(f,None,(getattr(self,f.attname) if raw else f.pre_save(self,False)))
  File "C:\Users\User\.virtualenvs\lib\site-packages\django\db\models\base.py",in <listcomp>
    values = [(f,False)))
  File "C:\Users\User\.virtualenvs\lib\site-packages\django\db\models\fields\files.py",line 286,in pre_save
    if file and not file._committed:
AttributeError: 'memoryview' object has no attribute '_committed''

models.py

class mymodel(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=200)
    image_file = models.ImageField(max_length=255,upload_to=upload_image_path,blank=True,null=True)
    is_production_ready = models.BooleanField(blank=True,null=True)

def upload_image_path(instance,filename):
    return "/".join(['image_file',str(instance.id),filename]

Serializers.py

class imageSerializer(serializers.ModelSerializer):
    
    class Meta:
        model = mymodel
        fields = '__all__'
        depth = 1

API.py

class imageViewSet(viewsets.ModelViewSet):
    queryset = mymodel.objects.all()
    permission_classes = [permissions.AllowAny]
    serializer_class = imageSerializer
    parser_classes = (
        MultiPartParser,FormParser,FileUploadParser,)
    
    def partial_update(self,request,pk=None):
        instance = self.get_object()
        data = {}
        data['id'] = request.data['id']
        data['is_production_ready'] = request.data['is_production_ready']
        # data['image_file'] = instance.image_file        
        serializer = imageSerializer(instance,data=data,partial=partial)
        if serializer.is_valid():
            print("serializer is valid...")
            print("serializer :: ",serializer)            
            serializer.save()
            return JsonResponse(serializer.data,status=201)
        return JsonResponse(serializer.errors,status=400)

尝试排除序列化程序中的图像字段

class imageSerializer(serializers.ModelSerializer):
    class Meta:
        model = mymodel
        exclude = ("image_file",)

还在models.py中定义了“ blank = True”和“ null = True”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?