タイトルが示すように。管理アプリケーションの単一フィールドのラベルを変更できるようにしたい。 Form.field属性を知っていますが、ModelまたはModelAdminにその情報を渡すにはどうすればよいですか?
フィールドの 詳細名 は、フィールド構築時の(オプションの)最初のパラメーターです。
フィールドがプロパティ(メソッド)の場合、short_descriptionを使用する必要があります。
class Person(models.Model):
...
def address_report(self, instance):
...
# short_description functions like a model field's verbose_name
address_report.short_description = "Address"
Javierが提案したように、model.pyのフィールドで冗長名を使用できます。以下の例、
class Employee(models.Model):
name = models.CharField(max_length = 100)
dob = models.DateField('Date Of Birth')
doj = models.DateField(verbose_name='Date Of Joining')
mobile=models.IntegerField(max_length = 12)
email = models.EmailField(max_length=50)
bill = models.BooleanField(db_index=True,default=False)
proj = models.ForeignKey(Project, verbose_name='Project')
ここで、dob、doj、およびprojファイルは、それらのフィールドに記載されているverbose_nameに従って、管理フォームに名前を表示します。
ハビエルの答えに基づいてフォームの1つのラベル(フロントエンド)とadminの別のラベルが必要な場合は、モデルに内部(admin)ラベルを設定し、フォームに上書きするのが最善です。もちろん、管理者はモデルフィールドのラベルを自動的に使用します。
メタオプション¶
次のように、内部クラスMetaを使用してモデルのメタデータを提供します。
from Django.db import models
class MyClassName(models.Model):
class Meta:
verbose_name = "Question"
verbose_name_plural = "Questions"
人間が読める単数形および複数形の名前(verbose_nameおよびverbose_name_plural)。必須ではありません。モデルにクラスMetaを追加することは完全にオプションです。