python-3.x - 列表中的 Django JSONfield 更新元素
问题描述
更新:感谢下面的评论,我正在更新问题。
我正在使用 JSONField 以这种格式存储元素列表:
[{“name”:“field1”,“value”:“100”,type:“number”},{“name”:“field2”,“value”:“500”,“type”:“number”} ]
我可以有更多的键,如“必需”、“类型”等。它的名称是唯一的。
这是我的模型:
from django.contrib.postgres.fields import JSONField
class MyModel(models.Model):
json_data = JSONField(default=list, null=True) # Create an empty list always
我有一个表格来更新存储在 json_data 中的值,我像这样更新数据:
obj = MyModel.objects.get(pk=1)
json = obj.json_data # [{"name": "field1", "value": "100", , type:"number"}, {"name": "field2", "value": "500", type:"number"}]
new_data = {"name": "field2", "value": "99", type:"number"} # data to update that comes from form
fields_not_updated = [field for field in json
if new_data['name'] != field['name']] # Create a list of elements that are not updated
fields_not_updated.append(new_data) # Add the new data, output: [{"name": "field1", "value": "100", type:"number"}, {"name": "field2", "value": "99", type:"number"}]
obj.json_data = fields_not_updated # set new json
obj.save() # save object
我想知道是否有更简单或更有效的方法来更新列表中的元素并使用 django 函数或方法或直接使用 python 将它们保存在 JSONField 中。
解决方案
推荐阅读
- ruby-on-rails - Rails API 嵌套属性 Find_or_create 以避免重复不起作用
- ns-3 - 在 ns-3 模拟器中计算 point2point 链路上的节点能耗
- sql-server - 在 SQL 中使用多列计算重复项
- spring - 具有火花提交集群模式的春季启动
- php - 同时在laravel中保存多个请求
- r - R中带有摘要身份验证的POST请求
- php - SQLSTATE [23000]:违反完整性约束:1048 列 'color_code' 不能为空
- python - 我的不和谐机器人正在响应 dms(Python) 中的命令
- eclipselink - 如何使用 EclipseLink JPA 配置 HikariCP
- image - 如何获取 RGB-D 图像的顶层(用于位置检测)