【发布时间】:2014-02-07 05:52:09
【问题描述】:
我有一个 postgreSQL 数据库,其中有一个表 foo 我在 django 之外创建的。我使用manage.py inspectdb 为我构建了表foo 的模型。当我使用 MySQL 时,这种技术效果很好,但使用 PostgreSQL 时,它却失败了。该表是数 GB 的,我使用 PostgreSQL 'COPY' 从文本文件构建它。
我可以在表 foo 上运行原始查询,一切都按预期执行。
例如
foo.objects.raw('bar_sql')
按预期执行。
但是运行如下查询:
foo.objects.get(bar=bar)
投掷
ProgrammingError column foo.id does not exist LINE 1: SELECT "foo"."id", "foo"."bar1", "all_...
foo 天生没有id 字段。据我了解,django 应该创建一个。在 django 之外创建表时,我是否有些颠覆了这一步?
在填充了表的模型上运行的查询在所有情况下都会按预期运行 django。
我在这里遗漏了一些非常基本的东西,我们将不胜感激。
我正在使用 django 1.6 和 postgreSQL 9.3。
【问题讨论】:
-
你的桌子和模型看起来怎么样? Django 可能无法识别哪个列是 PK,因此它会查找默认值“id”。你的模型应该有一个 pimary_key =True 的字段
-
感谢您的帮助。你完全正确。我从不设置主键。
标签: python mysql sql django postgresql