Próbuję serializować model zawierający pole właściwości, które również chcę serializować.
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')
Podczas próby uzyskania dostępu do powiązanego adresu URL otrzymuję wyjątek serializatora (KeyError) we ext_link
właściwości.
Jak mogę serializować ext_link
nieruchomość?
django-rest-framework
Sander Smits
źródło
źródło
fields
, w powyższym przykładzie otrzymasz wszystkieMyModel
pola plusext_link
w zserializowanych danych. I to jest naprawdę niesamowite w przypadku złożonych modeli! EDYCJA : Przynajmniej tak jest w przypadkudjangorestframework==2.3.14
.fields = "__all__"
również musiałem dodaćmyfield = serializers.ReadOnlyField()
zgodnie z jarmod, używając wersji 3.7.7jak
@Robert Townley
komentarz, to działa z wersją3.8.2
:class MyModelSerializer(serializers.ModelSerializer): ext_link = serializers.ReadOnlyField() class Meta: model = MyModel fields = "__all__"
źródło