【问题标题】:Database Error django数据库错误django
【发布时间】:2012-12-10 21:37:58
【问题描述】:

/admin/delmarva/event/ 处的数据库错误 没有这样的列:delmarva_event.eventdate

我在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 标记为 out 以查看是否收到不同的错误,然后它指出 delmarva_event.eventtime 也不存在。 I 这很奇怪,因为它没有 eventname 的问题。任何建议将不胜感激!

【问题讨论】:

    标签: python database django class


    【解决方案1】:

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

    如果不是, - 另一种 - NON PREFERRED 方法是删除表并重新创建它

    【讨论】:

      【解决方案2】:

      问题可能是您执行了syncdb,然后添加了eventdate 列。 Syncdb 只创建一次表,不再更新它们。您将需要使用 South 应用程序并进行迁移或删除表,然后再次使用 syncdb。

      【讨论】:

      • 南方app怎么称呼?
      • 您将在文档中找到说明。简而言之,您通过 manage.py schemamigration appname --initial 创建第一个迁移,从这一点开始,syncdb 将忽略此应用程序中的所有模型,您必须使用 manage.py migrate appname(appname 是必需的)。如果您已经有表,则必须伪造第一次迁移(参数 --fake 0001)。然后更改模型并调用 manage.py schemamigration appname --auto 然后再次迁移。如果重命名字段,则必须手动迁移。请检查文档,这里有你需要的一切;)
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2019-01-17
        • 2015-10-12
        • 1970-01-01
        • 2018-10-21
        • 2012-04-20
        • 1970-01-01
        • 2015-08-08
        • 2013-12-25
        • 2017-06-16
        相关资源
        最近更新 更多