Я хочу сериализовать модель, но хочу включить дополнительное поле, которое требует выполнения некоторых запросов базы данных на экземпляре модели для сериализации:
class FooSerializer(serializers.ModelSerializer):
my_field = ... # result of some database queries on the input Foo object
class Meta:
model = Foo
fields = ('id', 'name', 'myfield')
Каков правильный способ сделать это? Я вижу, что вы можете передать дополнительный "контекст" в сериализатор, является ли правильным ответом на переход в дополнительное поле в словаре контекста? При таком подходе логика получения нужного поля не будет самодостаточной с определением сериализатора, что идеально, поскольку каждый сериализованный экземпляр понадобится my_field
. В другом месте документации документаторов серии DRF говорит "дополнительные поля могут соответствовать любому свойству или вызываемому на модели". Есть лишние поля, о чем я говорю? Должен ли я определить функцию в определении модели Foo
, которая возвращает значение my_field
, а в сериализаторе я подключаю my_field к этому вызываемому? Как это выглядит?
Заранее благодарим, если вам необходимо, прояснить вопрос.