我已将数据存入我的数据库,如下所示
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。 谢谢!!
答案 0 :(得分: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没有办法生成它。
答案 1 :(得分: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中就像字典一样,所以希望如此。