반응형
✅ Django ModelForm의 Meta 클래스 완전 정복
✅ 1. Meta 클래스란?
- Meta는 폼 클래스 내부에 정의되는 특별한 클래스입니다.
- 이 클래스는 폼의 동작 설정(예: 연결된 모델, 사용할 필드, 표시할 라벨 등)을 담습니다.
- ModelForm 또는 ModelAdmin 등이 사용할 **메타 정보(meta-information)**를 제공합니다.
✅ 2. 사용 목적
ModelForm이 어떤 모델을 기반으로 할지, 어떤 필드를 폼에 표시할지 등의 정보를 알려줍니다.
✅ 3. 기본 구조
class QuestionForm(forms.ModelForm):
class Meta:
model = Question # 연결할 모델
fields = ['subject', 'content'] # 사용할 필드
labels = { # 라벨 표시 변경
'subject': '제목',
'content': '내용',
}
✅ 4. Meta 클래스 주요 속성 정리
속성명 | 설명 |
model | 이 폼이 어떤 모델과 연결되는지 지정 (반드시 필요) |
fields | 폼에서 표시할 모델 필드 목록 |
exclude | 제외할 필드 목록 (fields 대신 사용 가능) |
labels | 폼에서 필드 라벨을 커스터마이징 |
widgets | HTML 폼 위젯 (입력창, 텍스트영역 등)을 지정 |
help_texts | 필드 옆에 보조 설명 텍스트 제공 |
error_messages | 유효성 검증 실패 시 사용자 정의 오류 메시지 지정 |
✅ 5. 예시로 보는 활용법
class QuestionForm(forms.ModelForm):
class Meta:
model = Question
fields = ['subject', 'content']
labels = {
'subject': '제목',
'content': '내용',
}
widgets = {
'subject': forms.TextInput(attrs={'class': 'form-control'}),
'content': forms.Textarea(attrs={'class': 'form-control', 'rows': 5}),
}
help_texts = {
'subject': '질문 제목을 입력하세요.',
}
error_messages = {
'subject': {
'required': '제목은 반드시 입력해야 합니다.',
'max_length': '제목은 200자를 넘을 수 없습니다.',
}
}
✅ 동작 흐름 요약
- QuestionForm 클래스가 생성되면,
- Django는 내부 Meta 클래스를 확인하고,
- model, fields, widgets 등의 설정을 기준으로 자동으로 폼을 구성합니다.
✅ 핵심 요약
항목 | 설명 |
Meta 클래스 | ModelForm이 어떤 모델과 어떻게 연결되는지 정의 |
model | 폼이 참조하는 모델 지정 |
fields/exclude | 어떤 필드를 폼에 포함할지/제외할지 |
labels/widgets/error_messages 등 | 사용자 화면에 보이는 표현 설정 |
✅ 마무리 팁
- Meta는 폼만이 아니라, 모델 관리자(ModelAdmin), 직렬화(Serializer), CBV 설정 등에서도 널리 사용됩니다.
- 코드를 간결하게 유지하면서도 강력한 커스터마이징이 가능하게 해주는 Django의 중요한 설계 방식입니다.
'HTML5 > 반응형 웹' 카테고리의 다른 글
관리자 페이지에 모델 등록하기 (1) | 2025.07.12 |
---|---|
시 모델 만들기: Poem과 Author (2) | 2025.07.11 |
Django 프로젝트 시작과 앱 만들기 (0) | 2025.07.10 |
Python 가상환경 설정과 Django 설치 (4) | 2025.07.09 |
시마당 프로젝트 따라하기 (1) | 2025.07.08 |