使用multipart/formdata时在DRF中解析obj

2024-04-18 21:05:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模型:

class Post(models.Model):
   fonts = JSONField() # Postgres

我有一个嵌套序列化程序:

PostSerializer(serializer.ModelSerializer):
    fonts = FontsSerializer(many=True, required=False)

FontsSerializer(serializer.Serializer):
    primary = serializers.CharField(required=False, allow_null=True)
    secondary = serializers.CharField(required=False, allow_null=True)

前台人员使用多部分/表单数据向我发送数据: enter image description here

但这不是我这边的更新数据。我找不到如何处理它。 我尝试将密钥更改为key.nested: enter image description here

其工作数据已成功更新

正确的方法是什么? 如何设置DRF以使用键[nested]模板

附言:他们不能使用json,这是关于表单数据以及如何处理嵌套数据的问题


Tags: 数据模型falsetrue表单requiredfontsnull
1条回答
网友
1楼 · 发布于 2024-04-18 21:05:04

我发现一个可能的决定是创建自己的解析器

class NestedMultipartParser(parsers.MultiPartParser):
"""
Parser for processing nested field values
"""

def parse(self, stream, media_type=None, parser_context=None):
    result = super().parse(stream=stream, media_type=media_type, parser_context=parser_context)
    data = result.data.copy()
    for key, value in result.data.items():
        if '[' in key and ']' in key:
            del data[key]
            data[key.replace('[', '.').replace(']', '')] = value

    return parsers.DataAndFiles(data, result.files)

然后需要外接程序视图:

parser_classes = (NestedMultipartParser,)

但问题仍然悬而未决

相关问题 更多 >