モデル インスタンスの開始時にモデル属性を動的に設定する方法について質問があります。
ネイティブの PostgreSQL JSONField を持つ単純なモデルを使用しています。
from django.db import models
from django.contrib.postgres.fields import JSONField
class Booking(models.Model):
data = JSONField(blank=False, encoder=DjangoJSONEncoder)
モデルがインスタンス化されたときに「データ」フィールドに格納された値に基づいて、モデル インスタンスに属性を設定する方法はありますか?
私はこれを行うことができるようにしたい:
from .models import Booking
b = Booking.objects.create(data={'foo':'bar'})
b.foo # this should yield 'bar'
私の最初の考えは、モデルのinitメソッドをオーバーライドし、setattr() でインスタンス属性を設定することでしたが、モデルの init メソッドをオーバーライドすることは、Django のドキュメントでは強く推奨されていません。
これを達成する他の方法はありますか?どんな助けでも大歓迎です。
PS: モデル インスタンスの「データ」に格納されている値に、booking.data['foo'] のようにアクセスできることはわかっているので、これは探しているものではありません。