Je souhaite sérialiser un modèle, mais je souhaite inclure un champ supplémentaire qui nécessite d'effectuer des recherches dans la base de données sur l'instance de modèle à sérialiser:
class FooSerializer(serializers.ModelSerializer):
my_field = ... # result of some database queries on the input Foo object
class Meta:
model = Foo
fields = ('id', 'name', 'myfield')
Quel est le bon moyen de le faire? Je vois que vous pouvez passer en "contexte" supplémentaire au sérialiseur, est-ce que la bonne réponse est à passer dans le champ supplémentaire dans un dictionnaire de contexte? Avec cette approche, la logique d'obtention du champ dont j'ai besoin ne serait pas autonome avec la définition du sérialiseur, ce qui est idéal puisque chaque instance sérialisée en aura besoin my_field
. Ailleurs dans la documentation des sérialiseurs DRF, il est dit que "des champs supplémentaires peuvent correspondre à n'importe quelle propriété ou être appelés sur le modèle". Est-ce que je parle de champs supplémentaires? Dois-je définir une fonction dans Foo
la définition de modèle de qui renvoie une my_field
valeur, et dans le sérialiseur, je connecte my_field à cet appelable? A quoi cela ressemble-t-il?
Merci d'avance, heureux de clarifier la question si nécessaire.