Как дать родительское имя в сериализаторах? - PullRequest
0 голосов
/ 05 июля 2018

У меня есть три сериализатора, как показано ниже:

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 в моем текущем коде?

Любая помощь будет высоко ценится. Спасибо!

1 Ответ

0 голосов
/ 05 июля 2018

вы можете определить сериализатор следующим образом:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...