如何在序列化程序中指定父名称?

2024-05-20 23:59:03 发布

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

我有三个序列化程序,如下所示:

class MalbSerializer(serializers.ModelSerializer):
    class Meta:
        model = malb
        fields = ('zoning', 'zoningdesc', )

class MasrSerializer(serializers.ModelSerializer):

    class Meta:
        model = masr
        fields = ('solddate', 'soldprice', )

class MataSerializer(serializers.ModelSerializer):
    class Meta:
        model = mata
        fields = ('assessyear', 'landvalue', )

意见如下:

    malb_serializer = MalbSerializer(malb.objects.filter(maid=maid), many=True)
    masr_serializer = MasrSerializer(masr.objects.filter(maid=maid), many=True)
    mata_serializer = MataSerializer(mata.objects.filter(maid=maid), many=True)

    reponse = malb_serializer.data + masr_serializer.data + mata_serializer.data

    return Response(reponse)

因此,答复如下:

[
    {
        "zoning": null,
        "zoningdesc": null,
    },
    {
        "solddate": null,
        "soldprice": null,
    },
    {
        "assessyear": null,
        "landvalue": null,
    }
]

我想给每个元素一个标签,如下所示:

[
    {"Land Building": {
        "zoning": null,
        "zoningdesc": null,
    }},
    { "Sales Record":{
        "solddate": null,
        "soldprice": null,
    }},
     {"Tax Assessment":{
        "assessyear": null,
        "landvalue": null,
    }}
]

我曾尝试使用嵌套序列化程序,但我没有一个包含所有这三条消息的模型,根据我当前的代码,我可以使用该模型给它们一个json父名称吗

任何帮助都将不胜感激。谢谢


Tags: fieldsmodelnullmetaclassserializerserializersmodelserializer
1条回答
网友
1楼 · 发布于 2024-05-20 23:59:03

您可以这样定义序列化程序:

AnotherSerializer(serializers.Serializer):
    malb = serializers.SerializerMethodField()
    masr = serializers.SerializerMethodField()
    mata = serializers.SerializerMethodField()

    class Meta:
        fields = ('malb', 'masr', 'mamta',)

    def get_malb(self):
        return MalbSerializer(malb.objects.filter(maid=maid), many=True)

    def get_masr(self):
        return MasrSerializer(masr.objects.filter(maid=maid), many=True)

    def get_mata(self):
        return MataSerializer(mata.objects.filter(maid=maid), many=True)

相关问题 更多 >