2012-12-10 77 views
1

DatabaseError在/管理/德尔马瓦/事件/ 没有这样的列:delmarva_event.eventdate数据库错误的Django

我在models.py文件中创建一个类:

from django.db import models 
from django.contrib.auth.models import User 

class Event(models.Model): 
    eventname = models.CharField(max_length = 100) 
    eventdate = models.DateField() 
    eventtime = models.TimeField() 
    address = models.CharField(max_length = 200) 
    user = models.ForeignKey(User) 

    def __unicode__(self): 
     return self.eventname 

,现在当我尝试在我的管理员或我的main_page中查看我的事件,它给了我没有eventdate的错误。我试着再次同步数据库,但没有任何改变。此外,我标记了eventdate,以查看是否收到其他错误,并指出delmarva_event.eventtime也不存在。我这很奇怪,因为它与eventname没有问题。任何建议将不胜感激!

回答

3

如果您修改模型,syncdb不起作用。您需要一个称为south 的第三方工具,为您管理这些“迁移”。

如果没有, - 其他 - 非具体的方法是删除该表并重新创建它

1

这个问题可能是你没有执行syncdb,然后加入EVENTDATE列。 Syncdb只创建一次表格,并且不会更新它们。您需要使用South应用程序并进行迁移或删除表格,然后再次使用syncdb。

+0

你怎么称呼南方的应用程序? – Megan

+0

您将在文档中找到说明。简而言之,您将通过manage.py schemamigration appname --initial创建第一个迁移,从这一点开始,syncdb将忽略此应用程序中的所有模型,并且必须使用manage.py migrate appname(appname是必需的)。如果您已经有表格,则必须伪造第一个迁移(参数 - 伪0001)。然后更改模型并调用manage.py schemamigration appname --auto,然后再次迁移。如果您重命名字段,则必须手动迁移。请检查文档,这是你需要的;) – Bruce

0

一个快速解决方案是删除数据库,然后再次运行syncdb。它应该与manage.py文件位于同一个目录中。

+0

谢谢! :d – Megan