如何在 django 中从 JSONField 追加/删除数据

Posted

技术标签:

【中文标题】如何在 django 中从 JSONField 追加/删除数据【英文标题】:How to append/delete data from JSONField in django 【发布时间】:2018-06-29 16:50:34 【问题描述】:

我有一个JSONField,其中有一些类似这样的数据:

'key_one' : 'val_one',
 'key_two' : 'val_two'

我想向其中添加数据以及从中删除数据。 到目前为止,我可以给它一个不附加的值。

我正在使用mysql 数据库

【问题讨论】:

你在使用这个库吗:github.com/dmkoch/django-jsonfield? 不,我用的是 MySQL 5.7 自带的 JSONField 到目前为止,您为追加/删除密钥做了哪些尝试? RTFM? dev.mysql.com/doc/refman/5.7/en/json.html#json-paths 【参考方案1】:

用于附加到JSONFieldpython 中的任何其他JSON:

my_json = 'key_one' : 'val_one',
           'key_two' : 'val_two'

同:

my_json = Model.objects.get(pk=id).my_json_field

附加到json

my_json['new_key'] = 'new_val'

print (my_json) 

 'key_one' : 'val_one',
  'key_two' : 'val_two',
  'new_key'  : 'new_val'

json 中删除:

my_json.pop('new_key')

print (my_json) 

 'key_one' : 'val_one',
  'key_two' : 'val_two'

【讨论】:

以上是关于如何在 django 中从 JSONField 追加/删除数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 DJANGO 中查询包含值列表的 JSONField

如何在 JSONField 中使用 Postgres 在 Django 中搜索带有空格的键?

如何在 Django JSONField 数据上聚合(最小/最大等)?

如何在具有 Jsonfield 的模型中发布 django rest 中的数据

Django JSONField 不保存 0 值

Django:在过滤器和搜索中使用 JSONField 属性