2013-07-22 58 views
2

我是Python新手,特別是Django。當試圖潛入主題。框架,並通過其官方教程運行我在說頸部錯誤一些疼痛:向模型中添加自定義方法時出錯(來自Django教程)

​​

我輸入Django的外殼下一個(「蟒蛇manage.py殼」從項目目錄中調用):

>>> from polls.models import Poll, Choice
>>> from django.utils import timezone
>>> p = Poll.objects.get(pk=1)
>>> p.was_published_recently()

,我獲得下一個外殼輸出:

Traceback (most recent call last):
File "", line 1, in
AttributeError: 'Poll' object has no attribute 'was_published_recently'"

有人可以幫助我得到什麼我做錯了什麼?因爲我根本不知道什麼會導致這樣的錯誤...(已經從Google搜索出來,但沒有找到可以解決我的問題的答案)。

我用:
Django的1.5.1版
Python版本2.7.5

我這裏還有我的 「民意調查」 的模式代碼:

import datetime 
from django.utils import timezone 
from django.db import models 

class Poll(models.Model): 
    question = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 

    def __unicode__(self): 
     return self.question 

    def was_published_recently(self): 
     return self.pub_date >= timezone.now() - datetime.timedelta(days=1) 


class Choice(models.Model): 
    poll = models.ForeignKey(Poll) 
    choice_text = models.CharField(max_length=200) 
    votes = models.IntegerField(default=0) 

    def __unicode__(self): 
     return self.choice_text 

而且,這裏是我的 「管理」 文件:

from django.contrib import admin 
from polls.models import Choice, Poll 

class ChoiceInline(admin.TabularInline): 
    model = Choice 
    extra = 3 

class PollAdmin(admin.ModelAdmin): 
    fieldsets = [ 
     (None,    {'fields': ['question']}), 
     ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}), 
    ] 
    inlines = [ChoiceInline] 
    list_display = ('question', 'pub_date', 'was_published_recently') 

admin.site.register(Choice) 
admin.site.register(Poll, PollAdmin) 
+0

在shell中嘗試'poll.was_published_recently()'時的輸出是什麼?如果可行,你是否也重新啓動了服務器以獲取代碼中的更改? – bouke

+0

我得到下一個輸出:「追溯(最近呼叫最後):文件」「,第1行,在 AttributeError:'民意調查'對象沒有屬性'was_published_recently'」 – Splanger

回答

2

確保您使用4個空格壓痕,而不是製表符,標籤使得函數不通過不承認。

+0

哇...修復它給我。所以奇怪... tabbing似乎沒有影響其他任何東西。當時使用Sublime Text – mmcrae

+0

它在這裏不起作用,我不知道爲什麼 – kenshinji

+0

@kenshinji - 請參考:http://python.6.x6.nabble.com/Tutorial-method-was-published-today-問題td181333.html – dorado

0

我認爲它只是說你沒有在類中包含任何was_published_recently函數。感謝包含admin.py & polls.py文件,但我認爲它在您的models.py文件中,您需要確保一些事情。看起來您需要確保

from django.utils import timezone 

def was_published_recently(self): 
    return self.pub_date >= timezone.now() - datetime.timedelta(days=1) 

包含在您的models.py文件中。