【发布时间】:2012-11-28 17:57:13
【问题描述】:
我正在使用 Dotcloud 部署我的 django 应用程序。 我使用 Postgres 作为数据库。
我的应用程序有一个新模型,我想刷新和同步数据库。当我这样做时,一切正常。我的新模型(名为“Competition”)出现在我的管理员中。
问题是另一个模型 Match 与模型 Competition 有一个 ForeignKey。当我在管理员中转到“匹配”时,出现此错误:
DatabaseError at /admin/myproject/match/
column myproject_match.competition_id does not exist
LINE 1: ...team_challenger_id", "sportdub_match"."sport_id", "sportdub_...
你知道为什么 syncdb 没有让它工作吗?
感谢您的帮助。
编辑:我的两个模型
class Competition(models.Model):
name = models.CharField(max_length=256)
comp_pic = models.ImageField(upload_to="comp_pics/")
def __unicode__(self):
return self.name
class Match(models.Model):
team_host = models.ForeignKey(Team, related_name='host_matches')
team_challenger = models.ForeignKey(Team, related_name= 'challenger_matches')
sport = models.ForeignKey(Sport)
competition = models.ForeignKey(Competition)
【问题讨论】:
-
你能发布你的两个模型源代码吗?您确定您运行了 syncdb 并且列/表在您的数据库中吗?你登录数据库确认了吗?
-
我编辑了我的问题。是的,我运行了syncdb。而且我认为 dotcloud 在我刷新它时会自动执行此操作。我不知道列/表是否在我的数据库中。我该如何检查?
-
我的 models.py 中的更改在本地完美运行
-
dotCloud 不会自动运行 syncdb,您需要显式运行它,或者将其放入您的安装后脚本中。您可以通过 ssh 进入数据库服务并运行 psql 命令,或使用 pgadmin 或 navicat 等 GUI 数据库浏览器直接登录数据库。
标签: django postgresql dotcloud