如何从ValuesQuerySet中获取值

时间:2013-06-19 14:36:07

标签: python django dictionary typeerror

我正在尝试使用以下代码行从我的Django应用程序中的数据库中提取一些数据。 Job是我的模型的名称,jobIDs [i]表示正在操作的记录的id。

timeToRun = Job.objects.filter(id=jobIDs[i]).values()['whenToRun'].split(' ')[0]

当我到['whenToRun']时,我得到一个TypeError()。我是否误解了如何在这种字典中访问价值观?

编辑:为了澄清,.values()返回一个ValuesQuerySet

1 个答案:

答案 0 :(得分:1)

这可能就是你要找的东西:

timeToRun = Job.objects.filter(id=jobIDs[i]).values()[0]['whenToRun'].split(' ')[0]

来自documentation values()ValueQuerySet(查询集对象列表)

现在,如果Job.objects.filter(id=jobIDs[i])返回空的查询集,则会抛出错误,所以我会这样做:

if Job.objects.filter(id=jobIDs[i]).exists(): #a quick lookup
    timeToRun = Job.objects.filter(id=jobIDs[i]).values()[0]['whenToRun'].split(' ')[0]

另一个优化级别:

if Job.objects.filter(id=jobIDs[i]).exists(): #a quick lookup
    timeToRun = list(Job.objects.filter(id=jobIDs[i]).values_list('whenToRun', flat=True))[0].split(' ')[0]