我有一个关于如何在启动模型实例时动态设置模型属性的问题。Django:基于JSONField动态设置模型实例属性
我使用了原生的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'
我最初的想法是要覆盖模型的初始化方法,并设置有SETATTR()的实例属性,但覆盖模型的初始化方法在Django文档中强烈建议不要使用它。
有没有其他办法可以达到这个目的?任何帮助表示赞赏。 PS:我知道我可以在模型实例中访问存储在'data'中的值,如:booking.data ['foo'],所以这不是我正在寻找的。
听起来像自己绑起来节只是使用JSONField – e4c5