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