Junior — Middle
84
¿Puedes explicar qué es el campo SerializerMethodField en Django REST Framework y cómo se usa?
Respuesta de la IA
sobes.tech AI
SerializerMethodField в Django REST Framework — это специальное поле сериализатора, которое позволяет добавлять вычисляемые или динамические данные в сериализованный вывод. Оно не связано напрямую с моделью, а значение для него задаётся через метод в сериализаторе.
Чтобы использовать SerializerMethodField, нужно объявить его в сериализаторе и определить метод с именем get_<имя_поля>, который принимает объект и возвращает нужное значение.
Пример:
from rest_framework import serializers
class ProductSerializer(serializers.ModelSerializer):
discounted_price = serializers.SerializerMethodField()
class Meta:
model = Product
fields = ['id', 'name', 'price', 'discounted_price']
def get_discounted_price(self, obj):
return obj.price * 0.9 # например, скидка 10%
В этом примере поле discounted_price не хранится в базе, а вычисляется динамически при сериализации.