【发布时间】:2014-10-28 16:03:50
【问题描述】:
我已经实现了视图集和路由器,制作了一个返回某些特定字段的 API,我可以正确获取信息,并且我可以更新 (PUT) JUST ONE JSON 中的详细信息,一个一个,我需要同时更新所有这些。
我的 serializers.py
中有这个class OCompraDetalleSerializer(serializers.HyperlinkedModelSerializer):
# producto = ProductoSerializer(many=False)
item = serializers.RelatedField(source='producto.modelo')
descripcion = serializers.RelatedField(source='producto.descripcion')
unidad = serializers.RelatedField(source='producto.unidad')
# ocompra = OCompraSerializer(many = False)
class Meta:
model = OCompraDetalle
fields = ('url','item','descripcion','unidad','cantidad_ordenada','cantidad_recibida','fecha_entrega','precio','epc')
API 将这个返回给我
HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
[
{
"url": "http://localhost:8000/api/ocompradetalle/1/",
"item": "AANS/428375",
"descripcion": "SPLICING KIT SHIPPING ASSEMBLY",
"unidad": "PZA",
"cantidad_ordenada": "1",
"cantidad_recibida": "1",
"fecha_entrega": "2015-07-14",
"precio": "500",
"epc": "0320CAF425"
},
{
"url": "http://localhost:8000/api/ocompradetalle/5/",
"item": "AANS/53042",
"descripcion": "NOZZLE F-1/2 W/BLOW OFF CAP,LOCKWASHERS",
"unidad": "PZA",
"cantidad_ordenada": "5",
"cantidad_recibida": "0",
"fecha_entrega": "2015-07-14",
"precio": "300",
"epc": "0436F0BECD"
},
...
所以 ALLOW 部分表示我不能放,但如果我打开一个细节,我会得到:
HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS
{
"url": "http://localhost:8000/api/ocompradetalle/1/",
"item": "AANS/428375",
"descripcion": "SPLICING KIT SHIPPING ASSEMBLY",
"unidad": "PZA",
"cantidad_ordenada": "1",
"cantidad_recibida": "1",
"fecha_entrega": "2015-07-14",
"precio": "500",
"epc": "0320CAF425"
}
为了使更新成为可能,我的问题是: 如何同时 PUT(更新)整个 JSON,而不是对每个条目进行更新?
注意:'item','descripcion','unidad' 字段来自另一个模型,这就是我注释 ProductoSerializer 的原因,所以我决定在 json 中包含特定值。
注意 2:我只需要为每个条目 PUT 或更新 cantidad_recibida 值。
【问题讨论】:
标签: json django django-rest-framework