2016-04-22 8 views
1

私は、これは間違っているクエリです知っている、しかし、私はこのような何かを達成したいDjangoのORM既存のJSONbファイルにデータを追加するDjango ORM。

models.objects.filter(id=1).add('updation_track':{'date3':'Rahul'}) 

を使用して更新用トラックに追加したい

id | updation_track 
-----|------------------------------- 
1 | {'date1':'piyush','date2':'rakesh'} 
    | 
2 | {'date1':'Neha'} 

を次のように私はすでに私のデータベースにデータを持っていますように、次のように私の出力は次のようになります。

id | updation_track 
-----|------------------------------- 
1 | {'date1':'piyush','date2':'rakesh','date3':'Rahul'} 
    | 
2 | {'date1':'Neha'} 

私はジャンゴ1.9とpostgresのバージョン9.4を使用しています。 ありがとうございます!

答えて

1

検索や修正が必要なので、update()のようなライナーが1つあることはわかりませんが、以下のようにしてください。

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() 

これを行うにはraw 'sql'がありますが、ormにはそれを生成する方法はありません。

+0

返信nephlmありがとうございますが、動作していません –

+0

どのように失敗していますか? – nephlm

+0

ネーム:TypeError: 'models'オブジェクトは反復不可能です –

0

'updation_track'はJSONフィールドですか?その場合は、JSONフィールドのDjango documentationをチェックしてください。

、このようなフィールドを更新するために、私はそれを試していないが、私の野生の推測がある:JSONフィールドはPythonで辞書のように振る舞うので

models.objects.filter(id=1).update(updation_track = reduce(lambda x,y: dict(x, **y), (F('updation_track'), {'date3':'Rahul'}))) 

、これがうまくいけば、うまくいきます。

+0

Mehmet SencerがSyntaxError:keywordを式にすることはできません –

関連する問題