我有一个简单模型的小型Django项目。但是,我决定手动创建数据库并通过python manage.py syncdb
映射表格,而不是通过Meta
创建数据库,如下所示
class Item(models.Model):
name = models.CharField(max_length=50)
class Meta:
managed = False
db_table = 'ITEM'
但这不起作用。当我启动开发服务器并运行主视图时,Django会抛出一个错误,指出数据库中不存在名为ITEM
的关系,而实际上它确实存在。
我做了一些研究,但找不到有这样问题的人。有没有办法让它发挥作用?
答案 0 :(得分:2)
db_table名称应为小写:
db_table = 'item'
答案 1 :(得分:1)
Postgres将表名转换为小写字母,除非查询有引号。例如见:
http://binodsblog.blogspot.com/2011/02/postgresql-is-case-sensitive.html
通常情况下,细节会被ORM抽象掉,但如果您不使用syncdb,则必须对其进行管理。