2012-02-17 2 views
57

admin 최근 변경 사이드 바에 "객체"의 이름이 어떻게 추가되는지에 대한 기본 동작을 변경하고 싶습니다. 아래 그림을 참조하십시오관리 작업 사이드 바에서 Django "xxxxxx Object"사용자 정의 표시

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

나는이가 관리자의 이름을 지정하는 방법으로 변경하고 싶습니다. 이상적으로, "MyModelName 개체"에서 "Policy"개체 예제와 같이 "Policy : {{정책의"Policy Name "필드 값}}으로 변경할 수 있기를 원합니다.

..

내 환자 모델 __unicode__이 취급 생각했지만, 어떤 도움이 감사 표시되지 않습니다

+1

'__unicode__'는 그렇게합니다. 코드를 붙여서 잘못된 것을 볼 수 있습니다. –

답변

87

__unicode__ 이렇게합니다. 귀하의 모델은 다음과 비슷한 모습이 될 것

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

파이썬 3에서 당신은 __str__를 사용해야합니다 : 당신이보고있는 문자열은 __unicode__ 방법에서 오는

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__ 구현을 추가하면 새로운 활동을 한 후에 만 ​​이전 항목에 새로운 제목이 표시되지 않습니다.

+0

__unicode__을 설정 한 후에 작업 로그에 이름이 표시되지 않는 이유가 궁금합니다. 작성시 db를 사용하여 저장되는 로그 일뿐입니다! –

+2

당신이 그걸 설명하지 않았다면 큰 번거 로움을 주었을 것입니다. – dtc

1
당신은 표시하도록하는 열을 정의 할 필요가

... 예를 들어

:

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

나는 그 대답에 동의하지만, 내 컴퓨터에서 바로 작동하지 않습니다.

저는 Python3과 Django1.8을 사용하고 있었고,이 솔루션은 여전히 ​​제대로 작동하지 않으므로 이러한 방법을 시도합니다. __str____unicode__ 방법을 언급

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__은 오래된 방법입니다 ..... 아직 장고와 함께 파이썬 3, 새로운 방법 (__unicode__)가 작동하지 않습니다? – user798719

2

대답은 정확합니다. 버전 1.6 (내 생각) 이후, 그러나 docs에 명시된 바와 같이, 당신은 모두에 대해 python_2_unicode_compatible 장식을 사용할 수 있습니다 파이썬이 파이썬 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 객체에 위의를 사용할 수 있습니다 .

관련 문제