🧠 Django 모델에서 __str__() 메서드 완벽 정리 – 왜 쓰고 어떻게 작동하나?

2025. 4. 30. 17:33·기술블로그-Django편

🧠 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
'기술블로그-Django편' 카테고리의 다른 글
  • 🧠 Django 함수형 뷰 bookmark_list() 완벽 해석 – context의 역할은?
  • 🧠 WSL에서 SQLite 한글 깨짐 해결하기 – 한글 폰트 설치부터 설정까지
  • 🧠 WSL에서 SQLite GUI 도구(sqlitebrowser) 설치 및 실행 방법 완전 정복
  • 🧠 Django Meta 클래스 완벽 정리 – 내부 설정부터 Admin UI까지
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (787)
      • Python (32)
      • 프로젝트 (110)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    basalcellcarcinoma
    chinanightlife
    travel ban
    chatgpterror
    titaniumcase
    btsreunion
    youngprofessionals
    bts
    livebroadcast
    remittance
    hotcoffeecase
    RM
    americanlaw
    뷔
    homebartrend
    self-growth
    btsjungkook
    btscomeback
    americaparty
    newpoliticalparty
    college reunions
    global politics
    classaction
    trumpmuskclash
    life reflection
    btsdischarge
    smartphonedurability
    gpterror
    urbantrends
    lawsuitculture
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
🧠 Django 모델에서 __str__() 메서드 완벽 정리 – 왜 쓰고 어떻게 작동하나?
상단으로

티스토리툴바