2010-09-26 54 views
0

我有一個問題,添加自定義方法到我的模型。我在django書中找到了解決方案,但它不起作用。這裏是我的模型Django管理器屬性錯誤

class NewsManager(models.Manager): 
    def getLastNews(self): 
     return self.objects.order_by('-id')[:3] 

class News(models.Model): 
    title=models.SlugField() 
    shortBody=models.CharField(max_length=250) 
    fullBody=models.TextField() 
    author=models.ForeignKey(User) 

代碼,現在我運行python manage.py shell,並鍵入

from news.models import * 
News.objects.getLastNews() 
... 
Attribute error Manager object have no attribute getLastNews 

如果我做了一個錯誤?
順便說一句,這是從模型中獲取信息並將其傳遞給查看的好方法?

回答

6

您有經理與模型相關聯:

class News(models.Model): 
    # ..fields go here.. 

    objects = NewsManager() 

是的,這是爲「表級」功能添加到模型的好方法。

+0

好的,我已經添加它,現在它的工作完美。而且我也在getLastNews中錯誤地認爲它應該是self.order_by等沒有對象。 Thx尋求幫助 – John 2010-09-26 11:28:16

+0

還應該指出,你應該儘可能遵循django的標準慣例。例如,你可以調用方法「最新」而不是「getLastNews」。你還應該通過在你的新聞元素中添加一個'created_on'字段並用它來過濾,而不是使用id - 因爲過去人們可能會創建一篇新文章,這可能會很好嗎?以我的這個項目爲例:http://github.com/monokrome/django-news/blob/master/news/models.py – monokrome 2010-09-26 22:35:40