Я хочу серіалізувати модель, але хочу включити додаткове поле, для якого потрібно серіалізувати деякі пошукові бази даних на прикладі моделі:
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 до цього виклику? Як це виглядає?
Заздалегідь дякую, із задоволенням уточнюйте питання, якщо потрібно.