Quero serializar um modelo, mas quero incluir um campo adicional que exija que algumas pesquisas de banco de dados na instância do modelo sejam serializadas:
class FooSerializer(serializers.ModelSerializer):
my_field = ... # result of some database queries on the input Foo object
class Meta:
model = Foo
fields = ('id', 'name', 'myfield')
Qual é a maneira certa de fazer isso? Vejo que você pode passar no "contexto" extra para o serializador, é a resposta certa para passar no campo adicional em um dicionário de contexto? Com essa abordagem, a lógica de obter o campo necessário não seria independente da definição do serializador, o que é ideal, pois todas as instâncias serializadas precisarão my_field
. Em outra parte da documentação dos serializadores DRF, diz que "campos extras podem corresponder a qualquer propriedade ou que podem ser chamados no modelo". Campos extras são do que estou falando? Devo definir uma função na Foo
definição de modelo que retorne my_field
valor e, no serializador, conecto meu_campo àquele que pode ser chamado? Como é isso?
Agradecemos antecipadamente, prazer em esclarecer a pergunta, se necessário.