Quiero serializar un modelo, pero quiero incluir un campo adicional que requiera realizar algunas búsquedas en la base de datos en la instancia del modelo para serializar:
class FooSerializer(serializers.ModelSerializer):
my_field = ... # result of some database queries on the input Foo object
class Meta:
model = Foo
fields = ('id', 'name', 'myfield')
¿Cuál es la forma correcta de hacer esto? Veo que puede pasar un "contexto" adicional al serializador, ¿es la respuesta correcta pasar en el campo adicional en un diccionario de contexto? Con ese enfoque, la lógica de obtener el campo que necesito no estaría contenida en la definición del serializador, lo cual es ideal ya que cada instancia serializada necesitará my_field
. En otra parte de la documentación de los serializadores DRF dice "los campos adicionales pueden corresponder a cualquier propiedad o invocarse en el modelo". ¿De qué campos extra estoy hablando? ¿Debo definir una función en Foo
la definición del modelo que devuelva my_field
valor, y en el serializador conecto my_field a ese invocable? ¿Cómo se ve eso?
Gracias de antemano, feliz de aclarar la pregunta si es necesario.