【发布时间】:2016-04-11 22:04:02
【问题描述】:
我正在使用 Django 1.7、PostgresApp (PostgreSQL 9.4)、Python 2.7。
我已按照本教程设置和创建应用程序:https://docs.djangoproject.com/en/1.9/intro/tutorial02/
在 Python shell 中,对于我的数据库架构,我不断收到类似 "ProgrammingError: relationship "app_table" does not exist" 的错误。
所以我使用了教程中的类:
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
然后在 shell 中我得到了(正确的值):
>>> Question.objects.all()
[]
>>> Choice.objects.all()
[]
然后,将名称 Choice 修改为 MyChoice 给出:
>>> Question.objects.all()
[]
>>> MyChoice.objects.all()
...
ProgrammingError: relation "app_mychoice" does not exist.
为什么会这样? 我尝试了其他帖子中建议的答案
./manage.py makemigrations;
./manage.py migrate auth;
./manage.py migrate and
python manage.py syncdb
但没有任何效果。
【问题讨论】:
-
有点糊涂,你把
Choice(models.Model)改成MyChoice(models.Model)了吗? -
对于 Django 1.7+,您不应该使用
syncdb。您为什么要尝试将型号名称从Choice更改为MyChoice?运行./manage.py makemigrations是否创建了迁移以重命名表?您的应用程序迁移文件夹的内容是什么,您运行了哪些?您可以尝试删除并重新创建数据库,然后删除迁移并再次运行 makemigrations。 -
@Hybrid 是的,这是唯一的变化。
-
@Alasdair 我更改了它以查看它是否仍然有效。
makemigrations创建了一个名称已更新的迁移。我删除并重新创建了数据库,我得到了同样的错误。 -
好吧,这看起来像是一个迁移问题,我也总是遇到问题,最终不得不
fake并使用initial之类的标志,但我不想要给你一个试错答案,希望看到这个的人有更多的迁移经验并能够提供帮助
标签: python django postgresql heroku