django从字典数据库字段中检索特定数据

时间:2014-05-28 22:26:08

标签: django

我有一个包含保存为字典的值的表。

FIELD_NAME:extra_data

值:

{"code": null, "user_id": "103713616419757182414", "access_token": "ya29.IwBloLKFALsddhsAAADlliOoDeE-PD_--yz1i_BZvujw8ixGPh4zH-teMNgkIA", "expires": 3599}

我需要从字段" extra_data"中检索user_id值。只是没有下面的词典。

event_list = Event.objects.filter(season_id=season_id, event_status_id=2).value('extra_data')

2 个答案:

答案 0 :(得分:0)

如果您在代码中将字典存储为文本,则可以使用eval将其轻松转换为python字典 - 虽然我不知道您为什么要这样做,因为它会打开各种各样的字典潜在的恶意代码注入。

event_list = eval(Event.objects.filter(season_id=season_id, event_status_id=2).value('extra_data'))
user_id = event_list['user_id']
print user_id 

会给:

"103713616419757182414"

修改 在更深入的检查中,这不是Python字典,您可以导入JSON库来导入它,或者声明null是这样的:

null = None
event_list = eval(Event.objects.filter(season_id=season_id, event_status_id=2).value('extra_data'))
user_id = event_list['user_id']

无论哪种方式,在django文本域中存储任何结构化数据的想法都充满了危险,这些危险将会再次困扰你。 最佳解决方案是重新考虑您的数据结构。

答案 1 :(得分:-1)

这种方法对我有用。但是,这适用于符合json标准的字符串

import json
json_obj = json.loads(event_list)
dict1 = dict(json_obj)
print dict1['user_id']