2012-08-09 33 views
2

我試圖使用request.user變量過濾數據庫中的一組草稿對象。他們是出於某種原因,我得到了下面列出的錯誤。我該如何解決這個錯誤?Django:用戶過濾草稿導致錯誤

功能:

def posting_draft(request): 
    user = request.user 
    user_drafts = Draft.objects.filter(user = user) 
    drafts = dict() 
    for d in user_drafts: 
     drafts[d.title] = d.id 
    return render_to_response('posting_draft.html', {'STATIC_URL':STATIC_URL, 'draft_l' : drafts}) 

錯誤:

int() argument must be a string or a number, not 'SimpleLazyObject' 
+0

如果您包含追蹤的其餘部分,這將會很有幫助。 – stderr 2012-08-09 02:54:35

回答

4

由於request.user是一個SimpleLazyObject,直到它被訪問。嘗試將您的查詢更改爲以下內容:

user_drafts = Draft.objects.filter(user = user.pk) 
+0

你能解釋一下.pk的功能嗎? – 2012-08-09 03:10:48

+1

與'user.id'相同,但即使您將不同的字段設置爲'primary_key',也可以正常工作。當你調用它的時候,它會強制'SimpleLazyObject'被填充。它會這樣做,只有在真正需要數據時纔會從數據庫中提取數據,因爲數據庫查找相對較爲昂貴。 – 2012-08-09 03:13:31