微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django JSONfield 更新列表中的元素

如何解决Django JSONfield 更新列表中的元素

更新:感谢下面的评论,我正在更新问题。

我正在使用 JSONField 以这种格式存储元素列表:

[{"name": "field1","value": "100",type:"number"},{"name": "field2","value": "500","type":"号码"}]

我可以有更多的键,例如“required”、“type”等。名称是唯一的。

这是我的模型:

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",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",type:"number"}]


obj.json_data = fields_not_updated # set new json
obj.save() # save object

我想知道是否有更简单或更有效的方法来更新列表中的元素,并使用 django 函数方法或直接使用 python 将它们保存在 JSONField 中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。