这似乎是一个简单的问题,我不确定我做错了什么。例如,如果我想通过更改以下内容在models.py中的一个类中添加新字段:
class FeedBack(models.Model):
feedback = models.CharField(max_length=600)
user = models.ForeignKey(User,default="")
至
class FeedBack(models.Model):
feedback = models.CharField(max_length=600)
email = models.CharField(max_length=100)
user = models.ForeignKey(User,default="")
然后我跑了
python manage.py makemigrations
python manage.py migrate
一切似乎都很好,但实际上数据库中没有任何变化。在尝试查看反馈表时,我收到以下异常:
列IngressoMonitor_feedback.email不存在
还使用表上的psql \ d +显示电子邮件尚未添加
现在我可以使用psql来添加和更改表格,但我更喜欢在models.py中编写它,因为这对我来说似乎更容易。
确保包含该models.py文件的应用程序包含在项目设置文件的INSTALLED_APPS中。此外,除非您确定知道自己在做什么,否则请不要触摸应用程序迁移文件夹下的文件。另请确保您的设置文件中指定的数据库帐户具有必要的权限。
如果您最近更改了Django版本,则此link可能对您有用。但无论如何都要试一试,并在这种情况下进行每个应用程序的迁移:
python manage.py makemigrations app_name
如果所有其他方法都失败了,只需删除数据库的表,然后从头开始重新生成所有内容。但是,如果在某些时候,您与任何迁移文件混乱,您可能希望在执行makemigrations之前删除所有迁移文件,以确保您拥有manage.py可以使用的一组新的有效的迁移文件。
您可能需要重置数据库用户或所有者密码,然后重试。在我的我不得不重置默认postgres用户不使用此链接here从命令行使用任何密码。
然后尝试运行命令:python manage.py migrate
,现在就像魅力一样。
不要忘记也从django项目设置配置:myprojectname / myprojectname / settings.py文件。这里的例子是我的;
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'polling_db',
'USER': 'postgres',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}