2016-04-22 109 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:關鍵字不能是表達式 –

相關問題