J'essaie de sérialiser un modèle contenant un champ de propriété que je souhaite é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])
serializers.py:
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = ('name', 'ext_link')
Lorsque j'essaye d'accéder à l'URL associée, j'obtiens une exception de sérialiseur (KeyError) sur la ext_link
propriété.
Comment puis-je sérialiser la ext_link
propriété?
django-rest-framework
Sander Smits
la source
la source
fields
, dans l'exemple ci-dessus, vous obtiendrez tous lesMyModel
champs plusext_link
dans les données sérialisées. Et c'est vraiment génial pour les modèles complexes! EDIT : Au moins, c'est vrai pourdjangorestframework==2.3.14
.fields = "__all__"
j'ai également dû ajoutermyfield = serializers.ReadOnlyField()
comme jarmod spécifié, en utilisant la version 3.7.7comme
@Robert Townley
commentaire, cela fonctionne avec la version3.8.2
:la source