はじめに
Djangoのmodels.pyをmigratしてDBにテーブルを作成した場合、テーブル名の頭にアプリの名前がついてしまいます。
appという名前でアプリを作成し、python manage.py startapp app
以下のようなmodels.pyを作ったとすると
models.py
class Reporter(models.Model):
full_name = models.CharField(max_length=70)
テーブル名はapp_reporter
になります。
(↓DBを直接確認してみるとテーブル名称が確認できます。)
postgres-# \dt
List of relations
Schema | Name | Type | Owner
--------+----------------------------+-------+----------
public | app_reporter | table | postgres
public | auth_group | table | postgres
public | auth_group_permissions | table | postgres
public | auth_permission | table | postgres
public | auth_user | table | postgres
public | auth_user_groups | table | postgres
public | auth_user_user_permissions | table | postgres
public | django_admin_log | table | postgres
public | django_content_type | table | postgres
public | django_migrations | table | postgres
public | django_session | table | postgres
(11 rows)
テーブル名にいちいちアプリ名がつくのは後々面倒なため、アプリ名を消す方法を調べた結果を残します。
環境
- Django==4.2.6
- DB postgres
手順
models.pyで該当のMetaクラスにdb_table = 'テーブル名'
と追記します。
models.py
class Reporter(models.Model):
full_name = models.CharField(max_length=70)
def __str__(self):
return self.full_name
class Meta:
db_table = 'Reporter'
指定したテーブル名称に変更されました。
Schema | Name | Type | Owner
--------+----------------------------+-------+----------
public | Reporter | table | postgres
おわりに
メンテナンスするときのために、わかりやすいテーブル名称にしたいです。