将具有多部分/表单数据的HTML / axios对象列表发布到DRF多部分解析器

时间:2019-07-05 19:42:27

标签: html django api django-rest-framework multipartform-data

这是我的序列化器:

class ParentSerializer(serializers.ModelSerializer):
    children = ChildSerializer(many=True)  # reverse FK relation

ParentSerializer也有一个image字段,因此请求必须是multipart / form-data才能在单个请求中同时支持图像和数据。

以下代码/测试工作正常:

test_data = QueryDict('', mutable=True)
dictionary = {
    'name': ['test'],
    'children[0]': [{'key1': 'val1', 'key2': 'val2'}]
}
test_data.update(MultiValueDict(dictionary))

test_serializer = self.get_serializer(data=test_data)
test_serializer.is_valid(raise_exception=True)
test_instance = test_serializer.save()

...因为我正在手动创建children列表。

问题是我无法通过axios / HTML表单执行相同的操作。正在发送的数据将转换为字符串。

我有什么选择?我想发送子对象列表以及其他数据。

DRF v3.9Django v2.2

1 个答案:

答案 0 :(得分:1)

您的字段必须以以下格式命名:children[0]key1children[0]key2children[1]key1children[1]key2

请注意,.和键名之间没有点]