2014-02-21 1 views
2

Django Rest Framework 사용 이미지 필드로 모델을 업데이트하려고합니다. 모델의 다른 필드를 업데이트하려고하면이 오류가 발생합니다.Django Rest Framework : 이미지를 업데이트하지 않고 ImageField로 모델 업데이트

{"image": ["No file was submitted. Check the encoding type on the form."]} 

다음은 직렬 변환기에 대한 간단한 개념입니다. GET 호출에서 반환하는 이미지 필드에는 파일 이름 만 있습니다.

class ModelWithImageSerializer(serializers.ModelSerializer): 
    image = serializers.ImageField('image', required=False) 
    class Meta: 
     model = models.Level 
     fields = ('id','name', 'image') 

파일을 다시 제출하지 않고 모델을 업데이트하려면 어떻게해야합니까?

답변

3

장고 REST는 부분 PATCH 요청 (docs)을 제출할 수 있습니다. 자동으로 이것을 허용하는 UpdateAPIView (또는 이와 다른 변형)을 사용해야합니다. 부분 업데이트의 아이디어는 필요한 동작을 수행 할 모든 모델 필드를 제출할 것을 요구하지 않는다는 것입니다.

+0

나는 이것을 'settings'보기에서 사용하고 있는데, 다양한 양의 필드가 업데이트됩니다. 각 필드가 변경 될 때 패치 데이터를 작성하는 시스템을 만드는 데 집중해야합니까? DRF에게 이미지 필드를 식히기 위해 말할 수있는 방법이 있기를 바랍니다. – Timmerop

+0

당신이 무엇을 요구하고 있는지 확실하지 않습니다. 패치를 사용할 때 모든 필드를 제출할 필요가 없으며 이미지 필드를 생략하고 Django가 불평하지 않을 수 있습니다. 모델에 추가 필드를 추가 할 때 그 모델과 동일한 작업을 수행 할 수 있습니다. – miki725

+0

더 명확히 할 수 있습니다. 이것은 모델 직렬 변환기의 단순화 된 버전입니다. 양식을 통해 업데이트 할 수있는 많은 다른 필드가 있으므로 이미지 필드를 포함하여 여러 필드가 변경 될 수 있습니다. 패치를 사용하면 어떤 필드가 수정되었는지 알려주는 무언가를 만들어야합니다. – Timmerop

0

FileField에서 동일한 문제가 발생했습니다. PUT 요청에서 FileField 속성을 삭제해야만 저장된 값이 무시되지 않습니다. 모델에 blank = True가 있는지 확인하여 옵션 필드가되도록하십시오. 나는 DRF 2.4.4를 사용하고있다.

관련 문제