Djangoは管理者の複数形を修正しました


148

新しいdjジャンゴバージョンの管理サイトで、一部のモデル名を「Categorys」から「Categories」に変更するにはどうすればよいですか?以前のバージョン(管理サイトと管理モデルを除く)では、これを行うだけで済みました。 http://www.the-dig.com/blog/post/customize-plural-name-django-admin/

ただし、modeladminベースのクラス内でverbose_name_pluralを設定しても何も起こりません。誰もが同じ問題を抱えていますか?


Django 1.1.1で動作します... Meta入れ子クラス内に配置しますか?
rescdsk

ええ、私は新しいバージョンがモデル内部のメタクラスを取り除くと思っただけです。どうやらそうではない-彼らは単に管理クラスで物事をより複雑にした...
Andriy Drozdyuk

回答:


274

まあ、メタクラスのアプローチはまだ機能しているようです。したがって、モデル内にメタクラスを配置しても、トリックは実行されます。

class Category(models.Model):
    class Meta:
        verbose_name_plural = "categories"

ここでは小文字を使用していることに注意してください。djangoは、必要なときに大文字にするのに十分なほどスマートです。

このオプションの設定は、admin.pyファイルではなく、モデルクラスの奇妙な設定で行います。これは、それが説明されている開発ドキュメントの場所です:http :
//docs.djangoproject.com/en/dev/ref/models/options/#verbose-name-plural


20
これをモデルクラス(admin.pyではなく)で設定するという考えは、結局DRYに要約されます。モデルに関するこの情報を使用する独創的なことが管理者だけであるからといって、常にそうなるとは限りませんあります。うまくいけば、独自のコードのどこかにモデルの複数形の名前が必要な場合は、ホイールを再発明する代わりにこのプロパティを使用します。
cibyr 2014年

11

そのためには、モデルのメタクラスを追加する必要があります

class Category(models.Model):
    --- model field here ---
    class Meta: 
        verbose_name = "Category"
        verbose_name_plural = "Categories"

apps.pyのモデル管理者へのボーナス

class CategoryConfig(AppConfig):
    name = "Category"
    verbose_name = "Categories"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.