我在家里一直在使用Django和Django ORM,我不得不说,就易用性而言,它是目前最好的之一。
但是,我想知道是否可以在“反向”中使用它。
基本上,我想做的是从现有的数据库模式(从不使用django且相当老的项目中)生成Django模型。
这可能吗?
更新:有问题的数据库是Oracle
Answers:
是的,使用inspectdb
命令:
检查数据库
内省DATABASE_NAME设置指向的数据库中的数据库表,并将Django模型模块(models.py文件)输出到标准输出。
如果您有要使用Django的旧数据库,请使用此选项。该脚本将检查数据库并为其中的每个表创建一个模型。
如您所料,创建的模型将为表中的每个字段都具有一个属性。请注意,inspectdb在其字段名输出中有一些特殊情况:
[...]
dev
版本(更多强调?也许不是。)
我已经基于Django的inspectdb命令实用程序Django Inspectdb Refactor制作了可重用的应用程序 。
这会将模型分为现有数据库的models文件夹内的不同文件。当模型数量庞大时,这有助于管理模型。
您可以通过pip安装它:
pip install django-inspectdb-refactor
然后在settings.py中将应用注册为 inspectdb_refactor
之后,您可以在命令行中以如下方式使用它:
python manage.py inspectdb_refactor --database=your_dbname_defined_in_settings --app=your_app_label
这将成功地将所有表创建为模型文件夹,并将其作为应用程序内的不同模型文件。例如:
get_meta() missing 1 required positional argument: 'is_partition'
。使用django 2.0