Я пытаюсь сериализовать модель, содержащую поле свойств, которое я также хочу сериализовать.
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')
При попытке перейти к соответствующему URL-адресу я получаю исключение сериализатора (KeyError) для ext_link
свойства.
Как я могу сериализовать ext_link
свойство?
django-rest-framework
Сандер Смитс
источник
источник
fields
, в приведенном выше примере вы получите всеMyModel
поля плюсext_link
сериализованные данные. И это действительно круто для сложных моделей! РЕДАКТИРОВАТЬ : По крайней мере, это верно дляdjangorestframework==2.3.14
.fields = "__all__"
мне также пришлось добавить,myfield = serializers.ReadOnlyField()
как указано в jarmod, используя версию 3.7.7как
@Robert Townley
комментарий, эта работа с версией3.8.2
:class MyModelSerializer(serializers.ModelSerializer): ext_link = serializers.ReadOnlyField() class Meta: model = MyModel fields = "__all__"
источник