Drf - вывод serializer.data с пользовательскими данными с помощью APIView

я хочу выводить в API не только модели, но и некоторые пользовательские данные, перед любыми объектами

models.py

class Example_model(models.Model):
    example_model_name = models.CharField(max_length=100)

serializer.py

class Some_Serializer(serializers.ModelSerializer):
    class Meta:
        model  = Example_model
        exclude = ["id"]

views.py

class My_Api(APIView):
    def get(self, request): 
        all_example_objects = Example_model.objects.all()
        serializer_class = Some_Serializer(all_example_objects, many=True)
        
        #my custom data which i want to include in this serializer before every thing (on top of it)
        custom_data = "new_york"
        return Response(serializer_class.data)

я хочу каким-то образом включить переменную custom_data в вывод (поверх нее). чтобы это выглядело следующим образом

{
    "custom_data": "new_york",
    "api_output": [
        {
           "example_model_name":"hello world" 
        },
        {
           "example_model_name":"i love you" 
        },
        {
           "example_model_name":"my name is giovanni giorgio" 
        },
        ]
}

Вы можете добавить новое пользовательское поле в ModelSerializer с помощью SerializerMethodField. Это поле будет искать метод get_<fieldname>, запускать его и заполнять поле результатом.

class ExampleModelSerializer(ModelSerializer):
    custom_data = serializers.SerializerMethodField()

    class Meta:
        model  = ExampleModel
        exclude = ["id"]

    def get_custom_data(self, obj):
        return "new_york"
Вернуться на верх