49
私はシリアル化したいプロパティフィールドを含むモデルをシリアル化しようとしています。モデルプロパティを使用したModelSerializer
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を取得しようと、私はext_link
財産上のシリアライザ例外(KeyError例外)を取得しています。
ext_link
プロパティをシリアル化するにはどうすればよいですか?
ありがとうございます!今すぐ動作します。 –
***ワンノート***:メタのフィールドリストはオプションです。上の例で 'fields'を省略すると、直列化されたデータに' MyModel'フィールドと 'ext_link'を加えたものになります。そして、これは複雑なモデルにとって本当に最高です! * EDIT *:少なくとも、これは 'djangorestframework == 2.3.14'に当てはまります。 –
私にとって、serializers.Fieldを使用するとエラーが発生しました。 to_representationが定義されておらず、ビューが読み取り専用の場合、 "serializers.ReadOnlyField"は機能します。 –