【问题标题】:Getting missing column error whenever a model is saved保存模型时出现缺失列错误
【发布时间】:2013-03-19 02:22:08
【问题描述】:

我在 django 中创建模型时遇到问题。我写了一个这样的模型:

from django.db import models
class FooModel(models.Model):
    name = models.CharField(max_length = 255)

我跑

manage.py syncdb

但是当我在 shell 中时,我无法保存实例。每次我调用它时,它都会告诉我它缺少一列

manage.py shell
>>from app.models import FooModel
>>foo = FooModel()
>>foo.name = 'foo'
>>foo.save()
DatabaseError: column "name" of relation "ecommerce_foomodel" does not exist
LINE 1: INSERT INTO "ecommerce_foomodel" ("name") VALUES (E'123123as...

我们正在使用 postgres。

【问题讨论】:

  • 您可能想尝试通过“manage.py reset ecommerce”重置应用程序,甚至重新创建数据库,然后再同步数据库。
  • 如何重新创建数据库?抱歉,我对这一切有点陌生。
  • 您必须进行重置的原因是,如果您有一个名为ecommerce_foomodel 的现有表,那么syncdb 将忽略它,它不会更改表以添加任何新列。它只会在表不存在时创建。
  • 如果您使用 postgres 并且重置不起作用,我只会使用 pgadminIII 删除并重新创建数据库。

标签: python django postgresql django-models


【解决方案1】:

数据库表是在您添加相应字段之前创建的。

因此,您可以使用以下方法重新创建该应用的所有表(以防您没有任何有用的数据):

python manage.py reset ecommerce

或者,您应该使用 South 将数据库迁移到最新版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多