108 votes

ModelSerializer utilisant la propriété de modèle

J'essaie de sérialiser un modèle contenant un champ de propriété que je veux également sérialiser.

models.py:

 class MyModel(models.Model):
    name = models.CharField(max_length=100)
    slug = models.AutoSlugField(populate_from='name')

    @property
    def ext_link(self):
        return "/".join([settings.EXT_BASE_URL, self.slug])
 

sérialiseurs.py:

 class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = ('name', 'ext_link')
 

Lorsque j'essaie d'obtenir l'URL associée, une exception de sérialiseur (KeyError) apparaît sur la propriété ext_link .

Comment puis-je sérialiser la propriété ext_link ?

152voto

Tom Christie Points 8729

Comme ce n'est pas un champ de modèle, il doit être ajouté explicitement à la classe de sérialiseur.

 class MyModelSerializer(serializers.ModelSerializer):
    ext_link = serializers.Field()

    class Meta:
        model = MyModel
        fields = ('name', 'ext_link')
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X