私は自宅でDjangoとDjango ORMをいじくり回してきましたが、使いやすさの点で最も優れていると感じています。
しかし、「リバース」で使えるのかと思っていました。
基本的に私がやりたいのは、既存のデータベーススキーマから(Djangoを使用せず、かなり古いプロジェクトから)Djangoモデルを生成することです。
これは可能ですか?
更新:問題のデータベースはOracleです
回答:
はい、inspectdb
次のコマンドを使用します。
inspectdb
DATABASE_NAME設定が指すデータベース内のデータベーステーブルをイントロスペクトし、Djangoモデルモジュール(models.pyファイル)を標準出力に出力します。
Djangoを使用したいレガシーデータベースがある場合は、これを使用します。スクリプトはデータベースを検査し、データベース内の各テーブルのモデルを作成します。
ご想像のとおり、作成されたモデルには、テーブル内のすべてのフィールドの属性があります。inspectdbのフィールド名出力には、いくつかの特殊なケースがあることに注意してください。
[...]
dev
バージョンを参照していることを指摘する必要があるかもしれません(もっと強調して??おそらくそうではないかもしれません。)
私はdjangoのinspectdbコマンドユーティリティであるDjango Inspectdb Refactorに基づいて再利用可能なアプリを作成しました 。
これにより、既存のデータベースからモデルフォルダー内の異なるファイルにモデルが分割されます。これは、モデルの数が多くなったときにモデルを管理するのに役立ちます。
あなたはそれを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の使用