Je veux sérialiser un modèle, mais je veux inclure un champ supplémentaire qui nécessite d'effectuer des recherches dans la base de données sur l'instance du 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')
Quelle est la bonne façon de procéder ? Je vois que vous pouvez passer dans un "contexte" supplémentaire au sérialiseur, la bonne réponse consiste-t-elle à transmettre le champ supplémentaire dans un dictionnaire contextuel ?
Avec cette approche, la logique d'obtention du champ dont j'ai besoin ne serait pas contenue dans la définition du sérialiseur, ce qui est idéal puisque chaque instance sérialisée aura besoin de my_field
. Ailleurs dans la documentation sur les sérialiseurs de la DRF, il est question de dit "Les champs supplémentaires peuvent correspondre à n'importe quelle propriété ou appelable du modèle". Est-ce que les "champs supplémentaires" sont ce dont je parle ?
Dois-je définir une fonction dans Foo
La définition du modèle de l'entreprise qui renvoie my_field
et, dans le sérialiseur, je relie mon_champ à cet appelant ? A quoi cela ressemble-t-il ?
Je serai heureux de clarifier la question si nécessaire.