Junior — Middle
64
Можете объяснить, что такое поле SerializerMethodField в Django REST Framework и как оно используется?
Answer from AI
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 не хранится в базе, а вычисляется динамически при сериализации.