tl;dr:我们想在数据库中添加一个新表,而不会丢失以前的数据。
首先,我们使用以下方式转储数据库:
$ psql -h localhost dbname > dump_file
然后我们将它加载到我们的本地数据库中。这工作正常。
问题开始了: 在向 models.py 添加新模型时,syncdb 不会创建表。但是,如果我们创建一个新数据库(通过删除数据并运行 syncdb),它会显示为一个已创建的表。
这很令人惊讶,因为我们不认为添加新表是 syncdb 无法处理的“模式迁移”。因此,我们认为南方不会在这里提供帮助。
有什么我遗漏/出错的吗?
这是我们的代码的样子:
class Person(models.Model):
# attributes
class A(models.Model):
# attributes
class B(models.Model):
a_fk = models.ForeignKey(A)
# more attributes
class ProblemModel(models.Model)
p_fk = models.ForeignKey(Person)
a_fk = models.ForeignKey(A)
b_fk = models.ForeignKey(B)
使用命令的相关表的输出:
$ ./manage.py sqlall appname
是:
CREATE TABLE "appname_problemmodel" (
"id" serial NOT NULL PRIMARY KEY,
"p_fk" integer NOT NULL REFERENCES "appname_person" ("p_fk") DEFERRABLE INITIALLY DEFERRED,
"a_fk" integer NOT NULL REFERENCES "appname_a" ("id") DEFERRABLE INITIALLY DEFERRED,
"b_fk" integer NOT NULL REFERENCES "appname_b" ("id") DEFERRABLE INITIALLY DEFERRED
)
Django 版本 1.5.1
ProblemModel 是我们尝试添加的新模型。
在此先感谢您的帮助!