这似乎是一个简单的问题,我不确定我做错了什么。 例如,如果我想通过更改:
在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中编写它,因为这对我来说似乎更容易。
答案 0 :(得分:1)
确保包含该models.py文件的应用包含在项目设置文件的INSTALLED_APPS中。此外,除非您确定知道自己在做什么,否则请不要触摸应用程序迁移文件夹下的文件。另请确保您的设置文件中指定的数据库帐户具有必要的权限。
如果您最近更改了Django版本,则此link可能对您有用。但无论如何都要试一试,并在这种情况下进行每个应用程序的迁移:
python manage.py makemigrations app_name
如果所有其他方法都失败了,只需删除数据库的表,然后从头开始重新生成所有内容。但是,如果在某些时候,您与任何迁移文件混乱,您可能希望在执行makemigrations之前删除所有迁移文件,以确保您拥有manage.py可以使用的一组新的有效的迁移文件。
答案 1 :(得分:0)
您可能需要重设数据库用户或所有者密码,然后重试。在我的系统中,我必须重置默认的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',
}
}