3
は私がDjangoの残りのフレームワークシリアライザCharFieldですが、ソースが
class Vehicle(models.Model):
name = models.CharField(max_length=100)
STATUS_CHOICES = (
("N", "New"),
("U", "Used"),
("P", "Just Purchased")
)
status = models.CharField(max_length=3, choices=STATUS_CHOICES)
をCharFieldです選択肢シリアライザクラスも読める値を表示するには、ステータスのCharFieldですが、source
引数を指定しているとのモデルフィールドを持っている与えられたときに更新されない
class VehicleSerializer(ModelSerializer):
status = serializers.CharField(source='get_status_display')
class Meta:
model = Vehicle
{'status': "U"}
のパッチ要求で車両を更新しようとすると、更新は実行されません。 ただし、シリアライザステータスフィールドからsource
を削除すると、更新が行われます。 Webビューで適切な値を表示するには、ソースを指定する必要があります。
シリアライザのステータス名を別のものに変更し、テンプレート内でその名前を使用するオプションがあります。また、シリアライザの更新メソッドをオーバーライドするオプションがありますが、私の質問は、ソースが更新を防ぐために何をしているのですか?
ステータスは、モデルのフィールドのフィールドと同じ名前であるため、デフォルトで追加されます。 –
ソースを追加すると、フィールドが読み取り専用になっているようです。 – hspandher