我走的路很奇怪,但这是环境的结果。
我必须通过inspect_db从现有的postgres DB中生成单个model.py。
接下来,我修复一些字段(密钥有一些问题),并在该项目中创建2个应用程序。因此,现在我有3个model.py(它们是splits.py,它们是由inspect_db生成的)。 managed = True
已添加。类具有与数据库中相同的链接和数据类型
接下来,我希望将此模型集成到现有数据库中。我进行迁移,然后进行迁移,最后数据库中只有系统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表中有关我的应用程序的信息-没有结果。
所以我的问题是: -是否可以将新模型集成到现有数据库中(如果名称,键和格式还可以)? -是否可以通过迁移后保存现有数据库中数据的方式进行集成? -如何返回进行迁移的可能性?现在不起作用。
答案 0 :(得分:1)
使用现有数据库时的技巧是确保您从定义良好的状态开始:首先将Django设置为与数据库完全相同的状态,然后才开始对模型进行更改。因此,这些步骤是:
django-migrations
表,如果需要,请使用SQL将其删除。 (注意:我假设此数据库不是由Django生成的,而您正在创建一个新的Django应用程序)inspectdb
创建模型。如有必要,将模型重命名为具有适当的 CamelCase 。如果重命名将更改数据库中表或列名称的模型或字段,请确保设置db_table
(模型的Meta
选项)和db_column
(作为字段属性)。 manage.py makemigrations
。检查模型的迁移文件,以确保名称与数据库匹配。manage.py migrate <app> --fake
。这样会将迁移添加到您数据库中的django-migrations
表中,就好像它们在运行时一样,而没有实际运行它们。manage.py migrate
创建django提供的表(auth
,contenttype
,session
等)makemigrations
,则它应该只为您的更改创建迁移。