Как собрать разные сериализаторы для ответа Json в Django RFW? - PullRequest
0 голосов
/ 04 июля 2018

Это мой serializers.py,

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', )

class TotalSerializer(serializers.ModelSerializer):
    LandBuilding = serializers.SerializerMethodField()
    SalesRecord = serializers.SerializerMethodField()
    TaxAssessment = serializers.SerializerMethodField()

    def get_LandBuilding(self, number):

        queryset_lb = malb.objects.filter(maid=number)
        serializer = MalbSerializer(queryset_lb, many=True)
        return serializer.data

    def get_SalesRecord(self, number):

        queryset_sr = masr.objects.filter(maid=number)
        serializer = MasrSerializer(queryset_sr, many=True)
        return serializer.data


    def get_TaxAssessment(self, number):

        queryset_ta = mata.objects.filter(maid=number)
        serializer = MataSerializer(queryset_ta, many=True)
        return serializer.data

    class Meta:

        fields = ('LandBuilding', 'SalesRecord', 'TaxAssessment', )

Я хочу собрать эти три сериализатора в один сериализатор в TotalSerializer, но в нем есть ошибка:

Class TotalSerializer missing "Meta.model" attribute

Я не знаю, какие модели добавить сюда, потому что я уже добавил модели в MalbSerializer, MasrSerializer, MataSerializer.

Итак, как мне сделать так, чтобы MalbSerializer, MasrSerializer, MataSerializer вместе отображались в TotalSerializer?

Ответы [ 2 ]

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

В классе ModelSerializer ожидаются как минимум два поля в классе Meta, которые fields и model. Так что измените свое наследование в TotalSerializer, как показано ниже

class TotalSerializer(<b>serializers.Serializer</b>):
    LandBuilding = serializers.SerializerMethodField()
    SalesRecord = serializers.SerializerMethodField()
    TaxAssessment = serializers.SerializerMethodField()

    #...... Your code
0 голосов
/ 05 июля 2018

TotalSerializer должен подкласс serializers.Serializer, а не serializers.ModelSerializer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...