2013-06-19 10 views
1

我試圖從下面的代碼行中在我的Django應用程序中從我的數據庫中提取一些數據。 Job是我的模型的名稱,jobIDs [i]表示正在操作的記錄的ID。如何從ValueQuerySet中獲取值

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

當我得到['whenToRun']時,我得到一個TypeError()。我誤解了如何訪問這種字典中的值?

編輯:爲了澄清,.values()返回一個ValuesQuerySet

+0

也許你拼錯''通過GET' filter',第二個返回一個模型,並第一個在valueQuerySet。 – danihp

+0

過濾器應只返回一個模型,values()是我嘗試從記錄的各個列(特別是whenToRun)提取值。有沒有另一種方法來做到這一點?我一遍又一遍地檢查了這個代碼,我不相信有任何拼寫錯誤。 – avorum

+0

'get'是獲得只有一個模型的方法,那麼,您不需要追加'[0]'作爲@karthikr的目的。 – danihp

回答

1

也許這是你在找什麼:

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

documentationvalues()ValueQuerySet(一個QuerySet對象的列表)

現在,如果Job.objects.filter(id=jobIDs[i])返回空查詢集,它會拋出一個錯誤,所以我會做:

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] 
+0

我看你已閱讀我的評論;) - > [0] – danihp

+0

謝謝,我以爲我早些時候嘗試過,但它的工作。 – avorum