我走了一条奇怪的路,但这是环境的结果。
我必须是单身模型.py通过检查数据库从现有postgres数据库获取。
下一步我修复了一些字段(有一些键的问题),并在这个项目中创建了2个应用程序。所以现在我有3个模型.py(他们分开了模型.py,whitch是由inspect\u db生成的)。managed = True
已添加。类具有与数据库中相同的链接和数据类型
接下来,我希望将这些模型集成到exist数据库中。我做迁移,我迁移,最后数据库只有系统django表(auth_,django_migrations等等),没有从我的类(虽然迁移文件是创建的)。所以我试图删除迁移目录并重复makemigrations
和migrate
,但终端抛出了:
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
No migrations to apply.
(forest-venv) user@user-HP-Z800-Workstation ~/MyProjects/forest-venv/lesoved $ python manage.py runserver 8001
Performing system checks...
如果我再次尝试迁移-没有改变。我试图删除django_migrations表中关于我的应用程序的信息-没有结果。在
所以我的问题是: -是否可以将新模型集成到exist数据库中(如果名称、键和格式可以)? -通过迁移后保存exist数据库中的数据的方式,集成是可能的? -如何还移民的可能性?现在不管用了。在
使用现有数据库时的诀窍是确保从一个定义良好的状态开始:首先让Django进入与db完全相同的状态,然后才开始对模型进行更改。以下是步骤:
django-migrations
表,如果需要,请使用SQL删除它。(注意:我假设这个数据库不是由Django生成的,您正在创建一个新的Django应用程序)inspectdb
创建模型。如果需要,将模型重命名为具有适当的CamelCase。如果重命名会更改数据库中表或列名的模型或字段,请确保设置db_table
(模型的Meta
选项)和{manage.py makemigrations
。检查模型的迁移文件,确保名称与数据库匹配。在manage.py migrate <app> fake
。这将把迁移添加到db中的django-migrations
表中,就好像它们在运行一样,而不是实际运行它们。在manage.py migrate
来创建django提供的表(auth
,contenttype
,session
等…)makemigrations
,它应该只为您的更改创建一个迁移。在相关问题 更多 >
编程相关推荐