2014-01-29 28 views
0

這是我的模型:Django的查詢集奇怪的行爲:同一個對象返回的第一個和最後件

class Film(models.Model): 
    filmmaker = models.ForeignKey(settings.AUTH_USER_MODEL) 
    title = models.CharField(max_length=250) 

在我看來,一個用戶可以從下拉列表中選擇一個電影,去了那部電影的細節。

筆者認爲:

@login_required() 
def home(request): 

    movies = Film.objects.filter(filmmaker=request.user) 

    # I added the following to debug. Assume there are 4 elements in the queryset 
    print movies[0].title, movies[3].title 
    print movies[1].title, movies[2].title 

    ... 

控制檯輸出是這樣的是非:

title1 title1 
title2 title3 

然而,當我運行manage.py殼和手動創建的查詢集,

>>> movies = Film.objects.filter(filmmaker__email='[email protected]') 
>>> print movies[0].title, movies[3].title 
>>> print movies[1].title, movies[2].title 

輸出如預期:

title1 title4 
title2 title3 

這裏發生了什麼事?我哪裏錯了?我能做些什麼來解決它?似乎無法理解這種奇怪的行爲

+0

誰是電影製作人[3]'? –

回答

2

我不認爲我可以幫助你很多沒有看到整體數據庫結構和數據。

但有一點需要注意的是,在第一個實例中您基於請求對象進行查詢,而第二個基於電子郵件地址進行查詢。

也許在查詢之前,先嚐試詳細說明request.user對象,然後查看名稱/ email/etc是否是您期望的。

相關問題