🧠 Django 모델에서 __str__() 메서드 완벽 정리 – 왜 쓰고 어떻게 작동하나?
✅ 1. __str__()는 무엇인가요?
__str__()는 파이썬의 특수 메서드(매직 메서드) 중 하나로,
객체를 사람이 읽기 쉽게 문자열로 표현할 때 자동으로 호출되는 함수입니다.
class Bookmark(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
✅ 2. 어떤 상황에서 자동으로 호출되나요?
상황 설명 호출 여부
print(obj) | 객체 출력 | ✅ __str__() 자동 호출 |
str(obj) | 문자열 변환 | ✅ 호출됨 |
Django admin | 모델 객체 목록 출력 | ✅ 호출됨 |
repr(obj) | 내부 표현 | ❌ → __repr__() 호출 |
✅ 3. 흐름 예시로 이해하기
bm = Bookmark(name='구글')
print(bm) # 자동으로 bm.__str__() 호출됨
결과:
구글
📌 만약 __str__()이 없으면?
<Bookmark: Bookmark object (1)> # 사람이 이해하기 힘든 기본 표현
✅ 4. self는 뭘 의미할까요?
def __str__(self):
return self.name
- self는 그 객체 자신을 의미합니다
- 예: Bookmark(name='구글') → self.name은 '구글'
✅ 5. 비유로 쉽게 이해하기
__str__()는 객체의 "명찰을 뭐라고 보여줄지" 정하는 함수입니다
return self.name → 이 객체의 이름표를 name 필드 값으로 정하겠다는 뜻입니다
✅ 6. 요약 정리
요소 설명
__str__() | 객체를 사람이 읽기 좋은 문자열로 표현하는 함수 |
자동 호출 시점 | print(), str(), Django admin 출력 등 |
없을 경우 | <Model: Model object (1)>처럼 기본 표현 나옴 |
사용할 때 장점 | admin 보기 편하고 디버깅에 유리함 |
Django 모델에 __str__()를 정의하면
개체를 직관적으로 볼 수 있어서 개발 생산성과 가독성이 매우 향상됩니다! 😎
'기술블로그-Django편' 카테고리의 다른 글
🧠 Django 함수형 뷰 bookmark_list() 완벽 해석 – context의 역할은? (0) | 2025.04.30 |
---|---|
🧠 WSL에서 SQLite 한글 깨짐 해결하기 – 한글 폰트 설치부터 설정까지 (1) | 2025.04.30 |
🧠 WSL에서 SQLite GUI 도구(sqlitebrowser) 설치 및 실행 방법 완전 정복 (0) | 2025.04.30 |
🧠 Django Meta 클래스 완벽 정리 – 내부 설정부터 Admin UI까지 (0) | 2025.04.30 |
🧠 부모클래스 models와 Model 해석 하기 (0) | 2025.04.30 |