管理者の最近の変更のサイドバーに追加された「オブジェクト」の名前を表示する方法のデフォルトの動作を変更したいと思います。以下の図を参照してください。
Adminでのこれらの名前の付け方を変更したいと思います。 「ポリシー」オブジェクトの例のように、「MyModelNameオブジェクト」から「ポリシー:{{ポリシーの「ポリシー名」フィールドの値。}}のようなものに変更できることが理想です。
私は__unicode__
私の患者モデルではこれを処理しましたが、表示されません。どんな援助も大歓迎です。
__unicode__
はそうします。モデルは次のようになります。
class SomeModel(models.Model):
def __unicode__(self):
return 'Policy: ' + self.name
On Python 3を使用する必要がある__str__
:
def __str__(self):
return 'Policy: ' + self.name
__str__
メソッドは、Python3およびDjango1.8で機能します。
class MyModel(models.Model):
name = models.CharField(max_length=60)
def __str__(self):
return 'MyModel: {}'.format(self.name)
表示されている文字列は__unicode__
メソッド、他の人が述べたように。ただし、ログイベントを作成するときにadminはオブジェクトの文字列表現を保存するため、__unicode__
ログエントリが保存された後の実装。古いアイテムに新しいタイトルが表示されることはありません。新しいアクティビティを作成した後にのみ
__str__
および__unicode__
メソッドに言及する回答は正しいです。 docs で述べたように、バージョン1.6以降(と思う)、bothPython 2にpython_2_unicode_compatible
デコレーターを使用できます。およびPython 3:
from __future__ import unicode_literals
from Django.utils.encoding import python_2_unicode_compatible
@python_2_unicode_compatible
class MyClass(models.Model):
def __str__(self):
return "Instance of my class"
Model
以外のオブジェクトでも上記を使用できます。
表示する列を定義する必要があります...
例えば:
class POAdmin(admin.ModelAdmin):
list_display = ('qty', 'cost', 'total')
__unicode__
それを行います。私は今これを実行しています:
class Film(models.Model):
title = models.CharField(max_length=200)
...
def __unicode__(self):
return self.title
最近のアクションリストを見ると、編集したばかりの映画のタイトルが表示されます。
この質問は6歳なので、多くのことが変わりました。 python3.6とDjango(2.1.2)の最新バージョンを使用すると、常に新しいコードで__str__()
を使用する必要があります。__unicode__()
はpython2.7の古い話です。
これは、def str(self)を使用して動作します:self.titleを返します
class Blog(models.Model): title = models.CharField(max_length=200) def __str__(self): return self.title