2014-01-12 129 views
3

我有以下問題最新的()方法(順便說一句,我認爲我還沒有這個問題的前一天):Django的模型

>>> rule = Rule.objects.get(user=user) 
>>> rule.id 
1 
>>> rule = Rule.objects.get(user=user).latest('id') 

AttributeError: 'Rule' object has no attribute 'latest' 

爲什麼會出現錯誤?

回答

6

模型管理器的get()函數返回的對象本身的一個實例。

您提到的latest()函數屬於QuerySet類。調用.filter(),.all(),.exclude()等,都會返回一個查詢集。

什麼你可能尋找的是爲特定用戶第一過濾器,然後通過獲得「身份證」的最新結果:

rule = Rule.objects.filter(user=user).latest('id') 

看到這裏的文檔上querying models

1

latest method屬於QuerySet,而不是型號。

替換以下行:

rule = Rule.objects.get(user=user).latest('id') 

有:

rule = Rule.objects.filter(user=user).latest('id') 
+0

感謝,再次!我只是好奇爲什麼get方法有問題? – jazzblue

+0

@GregoryR,因爲['get'方法](https://docs.djangoproject.com/en/1.6/ref/models/querysets/#get)返回模型實例,而不是QuerySet對象。 (不像'filter'方法)。 – falsetru