[django] 관리자 작업 사이드 바에 Django “xxxxxx 개체”디스플레이 사용자 지정

관리자 최근 변경 사항 사이드 바가 추가 된 “개체”의 이름을 표시하는 방법의 기본 동작을 변경하고 싶습니다. 아래 그림을 참조하십시오.

최근 작업 모듈에서는 새 개체도 "MyModelName 개체"로 표시됩니다.

Admin에서 이름이 지정되는 방식을 변경하고 싶습니다. 이상적으로는 “정책”개체 예제에서와 같이 “MyModelName 개체”에서 “정책 : {{정책의”정책 이름 “필드 값}}과 같이”MyModelName 개체 “로 변경할 수 있기를 원합니다.

__unicode__내 환자 모델이 이것을 처리 했다고 생각 했지만 그렇지 않습니다. 도움을 주시면 감사하겠습니다.



답변

__unicode__그렇게합니다. 모델은 다음과 같아야합니다.

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

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__다른 사람들이 언급했듯이 method에서 온 것입니다 . 그러나 문제는 관리자가 로그 이벤트를 생성 할 때 객체의 문자열 표현을 저장한다는 것입니다. 따라서 __unicode__로그 항목을 저장 한 후 구현 을 추가 하면 새로운 작업을 수행 한 후에 만 ​​이전 항목에 새 제목이 표시되지 않습니다.


답변

언급 된 답변 __str____unicode__방법이 정확합니다. 그러나 문서 에서 언급했듯이 버전 1.6 (제 생각에)부터 Python 2와 Python 3 모두에python_2_unicode_compatible 데코레이터를 사용할 수 있습니다 .

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

최근 작업 목록을 보면 방금 편집 한 영화 제목이 보입니다.


답변

이것은 self.title을 반환 하는 def str (self) : 사용하여 작동 합니다.

다음과 같이 사용하십시오.

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