1

我正在使用的第三方应用程序将 json 存储在文本字段中。

我想将这些数据序列化为 json,我只需要能够从这个序列化程序中读取,而不是写入它。我不想在前端操作数据,所以我希望它以干净的 json 从我的 api 中出来。

class SomeSerializer(serializers.ModelSerializer):

    details = serializers.CharField()

    class Meta:
        model = SomeModel
        fields = ( 'id', 'details')

现在这是返回:

[{"id":"someID",
  "details":"{\"address\": {\"city\": null}"}"}]

我不知道如何在序列化程序中使用 json.loads,这似乎是最干净的选择。

4

1 回答 1

2

您可以使用SerializerMethodField

import json
from rest_framework import serializers


class SomeSerializer(serializers.ModelSerializer):

    details = serializers.SerializerMethodField()

    class Meta:
        model = SomeModel
        fields = ('id', 'details')
    
    def get_details(self, obj):
        return json.loads(obj.details)

请注意, SerializerMethodField 是read_only,不能用于写入。

于 2021-02-25T09:54:11.520 回答