2016-04-22 84 views
1

我已经有数据到我的数据库如下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。 谢谢!

回答

1

我不知道有像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有办法生成它。

+0

感谢您的回复nephlm,但它不起作用 –

+0

它是如何失败? – nephlm

+0

nephlm它说类型错误:'模型'对象不可迭代 –

0

'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:关键字不能是表达式 –

相关问题