1. ホーム
  2. python

[解決済み] Django Rest Framework - ModelSerializerにカスタムフィールドを追加する方法

2022-12-27 16:15:32

質問

私は ModelSerializer を作成し、モデルの一部ではないカスタムフィールドを追加したいと思います。

私は追加のフィールドを追加するための記述を見つけました ここで というのがあり、以下を試してみました。

customField = CharField(source='my_field')

このフィールドを追加して validate() 関数を呼び出すと、このフィールドは attr のディクショナリになります。 attr には、余分なフィールドを除いて指定されたすべてのモデルフィールドが含まれています。ですから、上書き検証でこのフィールドにアクセスすることはできませんよね?

このフィールドをこのようにフィールドリストに追加すると。

class Meta:
    model = Account
    fields = ('myfield1', 'myfield2', 'customField')

を実行すると、エラーが発生します。 customField は私のモデルの一部ではないので、エラーが発生します。私はこのシリアライザーのためだけにそれを追加したいので、何が正しいのでしょうか?

カスタムフィールドを追加する方法はありますか?

どのように解決するのですか?

あなたは正しいことを行っています。 CharField (そして他の型付きのフィールド) は書き込み可能なフィールドのためのものです。

この場合、単純な読み取り専用のフィールドが欲しいだけなので、その代わりとして

customField = Field(source='get_absolute_url')