date_hierarchy ='publication_date'ERROR

时间:2013-02-03 10:09:29

标签: python django django-models

我目前正在chapter 6 of the Djangobook tutorial。我遵循指示,一切都完美无缺!直到最后!

我将date_hierarchy ='publication_date'添加到我的代码

class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'publisher', 'publication_date',)
    list_filter = ('publication_date',)
    search_fields = ('title',)
    date_hierarchy = 'publication_date'

以上是我目前在admin.py模型上的内容。

我得到的错误是

    Request Method: GET
    Request URL:    http://127.0.0.1:8000/admin/books/book/
    Django Version: 1.4.3
    Exception Type: AttributeError
    Exception Value:    
    'unicode' object has no attribute 'year'
    Exception Location: /usr/local/lib/python2.7/dist-packages/django/contrib/admin/templatetags/admin_list.py in date_hierarchy, line 302
    Python Executable:  /usr/bin/python
    Python Version: 2.7.3
    Python Path:    
    ['/home/bradford/Development/Djangocode/mysite',
     '/usr/lib/python2.7',
     '/usr/lib/python2.7/plat-linux2',
     '/usr/lib/python2.7/lib-tk',
     '/usr/lib/python2.7/lib-old',
     '/usr/lib/python2.7/lib-dynload',
     '/usr/local/lib/python2.7/dist-packages',
     '/usr/lib/python2.7/dist-packages',
     '/usr/lib/python2.7/dist-packages/PIL',
     '/usr/lib/python2.7/dist-packages/gst-0.10',
     '/usr/lib/python2.7/dist-packages/gtk-2.0',
     '/usr/lib/pymodules/python2.7',
     '/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
     '/usr/lib/python2.7/dist-packages/ubuntuone-client',
     '/usr/lib/python2.7/dist-packages/ubuntuone-control-panel',
     '/usr/lib/python2.7/dist-packages/ubuntuone-couch',
     '/usr/lib/python2.7/dist-packages/ubuntuone-installer',
     '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']
    Server time:    Sun, 3 Feb 2013 03:42:02 -0600

不太清楚该怎么做!任何帮助表示赞赏!

class Book(models.Model):
    title = models.CharField(max_length = 100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField(blank = True, null = True)

    def __unicode__(self):
        return self.title

1 个答案:

答案 0 :(得分:1)

publication_date模型中的Book尚未设置,这就是您看到no attribute 'year'错误的原因(空白字符串没有年份属性,因为它不是真实的{{1} }})。

尝试将datetime字段更改为

publication_date

并清空您的数据库以重新开始(旧模型仍然是空白并产生此错误)。 publication_date = models.DateField(auto_add_now=True) 会将auto_add_now预先填充到创建模型的时间,您可以稍后进行更改。有关publication_date here的更多信息。

请注意,在您添加排序选项时,您才会看到此错误,直到您无法访问DateField字段为止 - 因此未引发任何错误。

修改

您可以使用

完全重置数据库
publication_date

打印出用于清除数据库$ python manage.py sqlclear <app_name> | python manage.py dbshell 的SQL,然后将其发送到数据库(sqlclear或管道)到|。然后运行

dbshell

重新同步您的模型和数据库。请注意,您通常不需要完成所有这些操作!