Django不会更新postgresql数据库。
Django不会更新postgresql数据库。
我最近将我的Django项目从SQL Lite数据库转换为Postgresql数据库。由于我还没有进行迁移操作,所以我选择了一个全新的数据库。我遵循了这里的指示:https://stackoverflow.com/a/5421511/3681278
一切都进展得很顺利,通过PGAdmin III更新和添加的内容都能在管理界面上显示出来。但是,当我尝试添加模型并运行同步数据库命令时,虽然没有出现错误,并且看起来一切都正常执行了,但是数据库中的内容没有任何变化。
此外,通过模型提交的更改通常会添加/更改/更新/删除数据库记录,但没有任何效果。
我已经费尽心思地寻找解决办法,但都没有任何结果。
一个有帮助的线索:
当我更改模型名称或删除模型时,系统会询问我是否要删除旧模型。所以,模型肯定是在某个地方生成了一些表,但一次又一次地对postgresql数据库没有任何影响。
这是我的settings.py文件:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'RED_DB', 'USER': 'postgres', 'PASSWORD': 'MyPass', 'HOST': '' } }
提前感谢你的帮助!
Django doesn't update postgresql database的问题出现的原因是:Sync db不是一个在修改了模型(迁移)之后可以运行的命令,大多数开发者使用一个叫做south的工具来处理迁移,south是Django的一个可插拔应用程序。
解决这个问题的方法是:使用south工具来处理迁移。具体的解决方法如下:
1. 安装south工具:
pip install south
2. 在Django项目的settings.py文件中,将south添加到INSTALLED_APPS中:
INSTALLED_APPS = ( ... 'south', )
3. 在命令行中运行以下命令来创建迁移文件:
python manage.py schemamigration appname --initial
其中,appname是需要进行迁移的应用程序的名称。
4. 运行以下命令来应用迁移:
python manage.py migrate appname
其中,appname是需要进行迁移的应用程序的名称。
通过以上步骤,就可以使用south工具来处理Django的数据库迁移了。另外需要注意的是,自Django 1.7版本开始,Django已经内置了迁移功能,可以参考官方文档进行使用。