Django – マイグレーションのテーブル名指定

概要

Djangoのマイグレーションでテーブルを生成すると、テーブル名は、アプリケーション名とスネークケース化されたモデル名がアンダースコアで繋がれた名前になる。

たとえばアプリケーション名がmy_app、モデル名がMyModelのときのテーブル名はmy_app_mymodelとなる(モデル・テーブル等の名前)。

これが次のような点で気持ち悪い。

  • 単数形のモデル名のままでテーブル名も単数形になる
  • モデル名がスネークケースにならず区切りがなくなる

この自動で付与されるテーブル名を変更する方法があることを知った(参考サイト:Django モデルのメタクラス)。

クラス定義にclass Metaを加える

アプリケーションとモデルを以下の設定とする。

アプリケーション名 warehouse
モデルクラス名 StockItemShippingOrder

これでマイグレーションを実行すると、テーブル名はwarehouse_stockitemwarehose_shippingorderのようになる。これをstock_itemsshipping_ordersのように変更したい場合、クラス定義に以下のように追記する。

マイグレーションを実行。

テーブル確認。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です