読者です 読者をやめる 読者になる 読者になる

Django1.7の管理サイトでアプリケーション名を変更する

Django1.6以前のバージョンでは、管理サイトで表示されるアプリケーション名を変更する方法は通常の使い方では提供されていませんでした。
変えたいのはこの「Myapp」という部分。

Django1.7ではアプリケーションごとの設定が抽象化、再利用可能な仕組みが導入され、アプリケーション名を設定できるようになりました。

ソースコード

django.apps.AppConfigクラスを継承して、アプリケーション設定のクラスを作成し、アプリケーション名を設定します。
作成したアプリケーション設定のクラスを、アプリケーションのデフォルトにします。
試したバージョンはPython3.4, Django1.7です。

myapp/models.py

モデルはいつも通り。

from django.db import models


class Item(models.Model):
    name = models.CharField(max_length=50)
    price = models.PositiveIntegerField(default=0)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        verbose_name = verbose_name_plural = "商品"
myapp/apps.py

Django1.7で追加されたAppConfigを使います。nameには他のアプリケーションと被らないようにアプリケーションの識別名を代入します。とりあえずはモジュール名で大丈夫です。
verbose_nameにアプリケーションの表示名を代入します。これが管理サイトで表示されます。

from django.apps import AppConfig


class MyAppConfig(AppConfig):
    name = 'myapp'
    verbose_name = "私のアプリケーション"
myapp/__init__.py

default_app_config変数に文字列でアプリケーション設定のクラスを指定します。

default_app_config = 'myapp.apps.MyAppConfig'

実行結果

「Myapp」の部分を「私のアプリケーション」という表示に変更できました。