2014-11-28 1 views
0

장고 자습서를 진행하고 있지만 __str__(self)을 사용하는 데 문제가 있습니다.django 자습서의 __str __ (self)는 텍스트 대신 객체를 반환합니다.

def _str_(self): 
     return self.question_text 

그리고 실행 명령을 : : 내 모델에서 아래의 방법을 추가

<Question: Question object> 

그러나 나는 그것을 기대 : Question.objects.all()

이 뭔가를 반환 return은 실제 질문 텍스트입니다.

+8

'_str_ '! ='__str __ '' – jonrsharpe

+0

은 언제나'self.question_text' 외래 키 필드입니까? – Anentropic

답변

1

이 실제로 두 가지 문제에 두 왼쪽 밑줄 둘로

def __str__(self): 
    return self.question_text 

이어야한다. 먼저 언급 한 바와 같이 __str__은 두 개의 밑줄을 사용해야합니다.

두 번째 문제는 명령 줄에서 개체를 인쇄해도 __str__ 메서드가 호출되지 않는다는 것입니다. 대신 __repr__ 메서드를 사용하여 개체의 문자열 표현을 가져옵니다. 이것은 객체의보다 기술적 인 표현을 제공한다는 점에서 __str__ 메소드와 다르다. 종종 클래스 이름과 객체 (ID, 메모리 주소 등)를 고유하게 식별하는 일부 속성을 포함한다. 예 : 추적을 통해 문제를 더 잘 식별 할 수 있습니다.

질문 텍스트를 얻으려면 직접 호출하거나 str(object) 메서드를 사용하여 __str__ 메서드를 명시 적으로 호출해야합니다. 모델 개체 목록에서 str()을 호출하면 목록의 __str__ 메서드가 호출되며이 메서드는 여전히 목록의 개체에 대해 __repr__ 메서드를 호출합니다.

0

이런 일이 일어났습니다. str 메서드를 추가하기 전에 셸을 닫았다가 다시 열어야했기 때문입니다.

관련 문제