2012-02-17 7 views
57

管理者の最近の変更サイドバーに「オブジェクト」の名前がどのように表示されるかのデフォルト動作を変更したいと思います。下の画像を参照してください。管理アクションのサイドバーでDjango "xxxxxx Object"の表示カスタマイズ

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

私は、これらは管理者に指定されている方法を変更したいと思います。理想的には、「MyModelNameオブジェクト」から「ポリシー」オブジェクトの例のように「ポリシー:{{ポリシーの「ポリシー名」フィールドの値}」に変更したいと考えています。

。。

私は私の患者モデルのため__unicode__がこれを取り扱うことを考えていたが、どのような援助が高く評価されていないよう

+1

'__unicode__'はそれを行います。あなたのコードをペーストして、何が間違っているかを確認してください。 –

答えて

87

__unicode__です。 Pythonの3オン

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

あなたが__str__を使用する必要があります:あなたのモデルは、このようなものになるはずです他の人が言及したよう

def __str__(self): 
    return 'Policy: ' + self.name 
+1

私は愚かにも、私がこのモデル以外のすべてのモデルでユニコードメソッドを宣言していることに気付かなかったのです。 :doh:すみません。 – patrickn

2

あなたは右__unicode__はそれを行うことを考えるにしている私は、この今実行しています。

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

最近の操作リストを見ると、私が編集したばかりの映画のタイトルが表示されます。

10

をあなたが見ている文字列は、__unicode__方法から来ています。しかし、管理者はログイベントを作成するときにオブジェクトの文字列表現を保存するため、ログエントリが保存された後に__unicode__実装を追加すると、新しいアクティビティを作成した後でのみ古いアイテムに新しいタイトルが表示されなくなります。

+0

私は、__unicode__を設定した後、アクションログに名前が表示されないのはなぜかと思っていました。作成時にデータを取っているdbに格納されているログだけだったはずです。 –

+2

ありがとうございました。あなたが説明していなかったら、私に大きな面倒を与えるでしょう – dtc

1
あなたが表示することをどの列、定義する必要があり

...例えば

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

私はそれらの答えに同意するが、私のマシン上だけで動作していません。

私はPython3とDjango1.8を使用していましたが、これらのソリューションはまだ正しく動作していないので、これらの方法を試してみます。

class MyModel(models.Model): 

    name = models.CharField(max_length=60) 

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

これも私のために解決されました。 Python3とDjango1.8も使用しています。 –

+0

__unicode__は私のためには機能しませんが、これは役に立ちます! –

+0

__str__は古い方法です.....まだPython 3とDjangoは、新しい方法(__unicode__)は機能しませんか? – user798719

2

__str____unicode__方法に言及答えは正しいです。あなたにも非Modelオブジェクトに上記を使用することができます

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" 

:バージョン1.6以降(と思う)、あなたは両方のPython 2とPython 3のためpython_2_unicode_compatibleデコレータを使用することができ、しかしdocsで述べたように。

関連する問題