web-dev-qa-db-ja.com

Django "xxxxxx Object"は、管理アクションサイドバーにカスタマイズを表示します

管理者の最近の変更のサイドバーに追加された「オブジェクト」の名前を表示する方法のデフォルトの動作を変更したいと思います。以下の図を参照してください。

In the recent actions module, it also shows new objects as "MyModelName object"

Adminでのこれらの名前の付け方を変更したいと思います。 「ポリシー」オブジェクトの例のように、「MyModelNameオブジェクト」から「ポリシー:{{ポリシーの「ポリシー名」フィールドの値。}}のようなものに変更できることが理想です。

私は__unicode__私の患者モデルではこれを処理しましたが、表示されません。どんな援助も大歓迎です。

89
patrickn

__unicode__はそうします。モデルは次のようになります。

class SomeModel(models.Model):
    def __unicode__(self):
       return 'Policy: ' + self.name

On Python 3を使用する必要がある__str__

def __str__(self):
   return 'Policy: ' + self.name
144
dan-klasson

__str__メソッドは、Python3およびDjango1.8で機能します。

class MyModel(models.Model):

    name = models.CharField(max_length=60)

    def __str__(self):
        return 'MyModel: {}'.format(self.name)
25

表示されている文字列は__unicode__メソッド、他の人が述べたように。ただし、ログイベントを作成するときにadminはオブジェクトの文字列表現を保存するため、__unicode__ログエントリが保存された後の実装。古いアイテムに新しいタイトルが表示されることはありません。新しいアクティビティを作成した後にのみ

13

__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以外のオブジェクトでも上記を使用できます。

7
alxs

表示する列を定義する必要があります...

例えば:

class POAdmin(admin.ModelAdmin):
    list_display = ('qty', 'cost', 'total')
3
zho

__unicode__それを行います。私は今これを実行しています:

class Film(models.Model):
    title = models.CharField(max_length=200)
    ...
    def __unicode__(self):
        return self.title

最近のアクションリストを見ると、編集したばかりの映画のタイトルが表示されます。

2
Andrew Barrett

この質問は6歳なので、多くのことが変わりました。 python3.6とDjango(2.1.2)の最新バージョンを使用すると、常に新しいコードで__str__()を使用する必要があります。__unicode__()はpython2.7の古い話です。

0
cgsdfc

これは、def str(self)を使用して動作します:self.titleを返します

class Blog(models.Model): title = models.CharField(max_length=200) def __str__(self): return self.title

0
Vishnu M. D.