我有一个名为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
}
那么......如何在不重新提交/重新上传图像文件的情况下更新我的对象?
答案 0 :(得分:1)
如果使用PUT
更新对象,则必须发送完整实例。因此,在您的情况下,您必须发送image
的图像文件而不是图像的URL。
最简单的解决方案可能是使用PATCH
而不是PUT
。然后,您可以进行部分更新并仅发送更新的字段。
{
"featured": true
}