我想用Django存储dict。 一个非常基本的解决方案是:
class foo(models.Model):
bar = models.TextField()
fooInstance.bar = json.dumps(my_dict)
但我希望能够直接访问它,而不是经常使用json,所以我做了以下操作:
^{pr2}$这在很大程度上是有效的,只是我不能做一件事:
fooInstance.bar['key'] = 'value'
这个表达式通过了,没有错误。但是这个价值没有被设定。 有人知道怎么做吗?在
感谢任何帮助。在
因此,不必在每次更改栏时更新栏,而是只在保存前更改栏。 我的解决办法是:
这很管用。我可以和他们一起工作实例.foobar作为常规的dict,并保存到数据库。在
虽然最好使用
JSONField
来处理它,但是我将回答您的问题,因为它不是强制执行特定的DB后端。在问题的根本原因是,每次在模型实例上调用
bar
时,都会创建并返回一个新字典,因此您的更改将丢失。在您应该将创建的字典存储在属性中,以避免这种重新创建行为。在
或者您可以使用
@cached_property
装饰器。[见1和2]相关问题 更多 >
编程相关推荐