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"