Django ORM 将数据添加到现有的 JSON 文件中。
Django ORM to add data into existing JSONb filed.
我的数据库中已经有如下数据
id | updation_track
-----|-------------------------------
1 | {'date1':'piyush','date2':'rakesh'}
|
2 | {'date1':'Neha'}
我想使用 django orm 添加更新轨道
models.objects.filter(id=1).add('updation_track':{'date3':'Rahul'})
我知道这是错误的查询,但我想实现这样的结果,这样我的输出应该如下所示:
id | updation_track
-----|-------------------------------
1 | {'date1':'piyush','date2':'rakesh','date3':'Rahul'}
|
2 | {'date1':'Neha'}
我使用的是 django 1.9 和 postgres 9.4 版。
谢谢!!
我不知道有像 update() 这样的单行程序,因为您需要检索和修改,但下面应该可以做到。
for obj in models.objects.filter(id=1).all():
# assuming a more complicated filer in reality or just use get()
obj.updation_track['date3'] = 'Rahul'
obj.save()
有一些原始的 'sql' 可以做到这一点,但我认为 orm 没有办法生成它。
'updation_track' 是 JSON 字段吗?如果是这样,您可能需要检查 Django documentation JSON 个字段。
对于更新这些字段,我没有尝试过,但我的大胆猜测是:
models.objects.filter(id=1).update(updation_track = reduce(lambda x,y: dict(x, **y), (F('updation_track'), {'date3':'Rahul'})))
由于 JSON 字段在 python 中的作用类似于字典,希望这会起作用。
我的数据库中已经有如下数据
id | updation_track
-----|-------------------------------
1 | {'date1':'piyush','date2':'rakesh'}
|
2 | {'date1':'Neha'}
我想使用 django orm 添加更新轨道
models.objects.filter(id=1).add('updation_track':{'date3':'Rahul'})
我知道这是错误的查询,但我想实现这样的结果,这样我的输出应该如下所示:
id | updation_track
-----|-------------------------------
1 | {'date1':'piyush','date2':'rakesh','date3':'Rahul'}
|
2 | {'date1':'Neha'}
我使用的是 django 1.9 和 postgres 9.4 版。 谢谢!!
我不知道有像 update() 这样的单行程序,因为您需要检索和修改,但下面应该可以做到。
for obj in models.objects.filter(id=1).all():
# assuming a more complicated filer in reality or just use get()
obj.updation_track['date3'] = 'Rahul'
obj.save()
有一些原始的 'sql' 可以做到这一点,但我认为 orm 没有办法生成它。
'updation_track' 是 JSON 字段吗?如果是这样,您可能需要检查 Django documentation JSON 个字段。
对于更新这些字段,我没有尝试过,但我的大胆猜测是:
models.objects.filter(id=1).update(updation_track = reduce(lambda x,y: dict(x, **y), (F('updation_track'), {'date3':'Rahul'})))
由于 JSON 字段在 python 中的作用类似于字典,希望这会起作用。