我有一个在Oracle数据库上创建的Django项目,我想切换到另一个Oracle数据库。我已经学习了这个教程https://pythonfusion.com/switch-database-django/,但是有一个问题,不是所有的模型都是在Django中创建的,有些是在其他数据库的现有表上使用inspectdb创建的。因此,当使用migrate --database=new 命令时,我得到了一些关于那些在Django创建之前就已经存在的表的错误。有没有办法只迁移Django工作所必需的模型和表?(用户,授权者)
3条答案
按热度按时间busg9geu1#
我认为你必须看一下每个模型 meta类的托管属性,如果托管属性为true,那么django将改变数据库中的模型。
非托管模型:
托管模型:
更多文档,请访问:https://docs.djangoproject.com/en/4.1/ref/models/options/
yr9zkbsy2#
是的,你可以自定义你的迁移行为,命令python manage.py makemigrations创建一对夫妇的文件,用于迁移您的模型到您的数据库,任何人,你仍然可以访问这些文件,并选择确切地包括什么,排除,甚至编辑他们.
检查以下链接:https://dev.to/koladev/writing-custom-migrations-in-django-3eli
4ioopgfo3#
如果我没有理解错你的问题,那么你应该使用Django内置的迁移。要想知道你的新数据库运行了哪些迁移,运行命令
manage.py showmigrations --database=new
,它会显示你的应用上下文中所有迁移的列表。一旦完成,您可以通过运行命令manage.py migrate --database=new app_label migration_name
手动运行所需的迁移(例如auth
和contenttypes
)。showmigrations
命令:migrate
https://docs.djangoproject.com/en/4.1/ref/django-admin/#django-admin-showmigrations命令:https://docs.djangoproject.com/en/4.1/ref/django-admin/#django-admin-migrate