Возвращает что-то, что не является частью какой-либо модели в Generics.listAPIView

#django #django-models #django-rest-framework #django-views #django-serializer

#django #django-модели #django-rest-framework #django-просмотры #django-сериализатор

Вопрос:

Как вы форматируете данные, возвращаемые из Generics.Класс ListAPIView перед отправкой его во внешний интерфейс? Я хочу добавить метаданные к возвращаемому значению, но я не могу добавить какие-либо метаданные, которые еще не являются частью модели. Например:

 class someList(generics.ListAPIView):
    serializer_class = someSerializer

    def get_queryset(self):
        return someQueryset()

class someListSerializer(SurveySerializer):
    class Meta:
        model = someListModel
        fields = ['modelField']

class someListModel(Base):
    modelField=models.TextField(default="", blank=True)

 

Это приведет к
[{Поле модели: информация},{Поле модели: информация},{Поле модели: информация}]

Что, если я хочу [ {Поле модели: информация, информация, вычисленная из набора запросов: но не часть модели}, {Поле модели:информация, информация, вычисленная из набора запросов:но не часть модели},{Поле модели: информация, информация, вычисленная из набора запросов:но не часть модели} ]

informationCalculatedFromQueryset не является частью someListModel, поэтому я не могу просто добавить его в поля. Как мне вручную добавить эту информацию во внешний интерфейс? Возможно ли это?

Ответ №1:

Для этого вы можете использовать SerializerMethodField в этом, вы можете сделать так:

     class SurveySerializer(serializers.Serializer):
        otherField = serializers.SerailzerMethodField()

        get_otherField(self, obj):
             return "I am other field"
    
        class Meta:
              model = Survey
              fields = "__all__"