1

我目前正在阅读 Djangobook 教程的第 6 章。我按照说明进行操作,直到一切正常!!!

我将 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
4

1 回答 1

1

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

尝试将publication_date字段更改为

publication_date = models.DateField(auto_add_now=True)

并清空您的数据库以重新开始(旧模型仍然是空白并产生此错误)。将auto_add_now预填充publication_date到模型创建的时间,您可以稍后更改它。更多信息在DateField 这里

请注意,您仅在添加排序选项时才会看到此错误,因为到目前为止您还没有理由访问该publication_date字段 - 因此没有引发错误。

编辑

您可以完全重置您的数据库

$ python manage.py sqlclear <app_name> | python manage.py dbshell

它打印出用于清除数据库的 SQL,sqlclear然后将其发送到数据库(|或管道)到dbshell. 然后运行

$ python manage.py syncdb

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

于 2013-02-03T11:26:50.430 回答