Voglio serializzare un modello, ma voglio includere un campo aggiuntivo che richiede la serializzazione di alcune ricerche di database sull'istanza del modello:
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 è il modo giusto per farlo? Vedo che puoi passare un ulteriore "contesto" al serializzatore, è la risposta giusta per passare nel campo aggiuntivo in un dizionario di contesto? Con questo approccio, la logica di ottenere il campo di cui ho bisogno non sarebbe autonoma con la definizione di serializzatore, che è l'ideale poiché ogni istanza serializzata avrà bisogno my_field
. Altrove nella documentazione dei serializzatori DRF afferma che "i campi extra possono corrispondere a qualsiasi proprietà o richiamo sul modello". Sono campi extra di cosa sto parlando? Devo definire una funzione nella Foo
definizione del modello che restituisce my_field
valore e nel serializzatore collego my_field a quel callable? Che aspetto ha?
Grazie in anticipo, felice di chiarire la domanda, se necessario.