Django ORM将数据添加到现有的JSONb文件中。
问题描述:
我已经有数据到我的数据库如下Django ORM将数据添加到现有的JSONb文件中。
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字段吗?如果是这样,您可能需要在JSON字段上检查Django documentation。
对于更新等领域,我还没有尝试过,但我大胆猜测是:
models.objects.filter(id=1).update(updation_track = reduce(lambda x,y: dict(x, **y), (F('updation_track'), {'date3':'Rahul'})))
由于JSON领域像在Python字典,这将工作,希望。
+0
Mehmet Sencer出错SyntaxError:关键字不能是表达式 –
感谢您的回复nephlm,但它不起作用 –
它是如何失败? – nephlm
nephlm它说类型错误:'模型'对象不可迭代 –