如何使用图像字段更新对象 - Django Rest Framework

时间:2016-03-24 08:27:05

标签: django django-rest-framework

我有一个名为ProductImage的模型,其中包含一些字段和一个Django ImageField。在这种情况下,我已经创建了对象,我想更新对象中的featured布尔值。

问题是,当我执行$http.put()(使用AngularJS)时,我收到一条错误,说:

  

提交的数据不是文件。检查表单上的编码类型。

我的REST API对象在GET请求中如下所示:

{
    "id": 15,
    "image": "http://127.0.0.1:8000/media/products/photo_1_5.JPG",
    "alt": "HelloWorld",
    "featured": false,
    "product": 1
}

我发送的HTTP PUT请求如下所示:(注意featured已更改为true

{
    "id": 15,
    "image": "http://127.0.0.1:8000/media/products/photo_1_5.JPG",
    "alt": "HelloWorld",
    "featured": true,
    "product": 1
}

那么......如何在不重新提交/重新上传图像文件的情况下更新我的对象?

1 个答案:

答案 0 :(得分:1)

如果使用PUT更新对象,则必须发送完整实例。因此,在您的情况下,您必须发送image的图像文件而不是图像的URL。

最简单的解决方案可能是使用PATCH而不是PUT。然后,您可以进行部分更新并仅发送更新的字段。

{
    "featured": true
}