모델폼을 렌더링하면 --- 와 같은 빈 선택옵션이 생긴다.
이 부분을 지우는 방법 2가지가 있다.
Teacher
라는 모델로 예를 들면,
# 교사 생성 폼
class TeacherForm(forms.ModelForm):
class Meta:
model = Teacher
fields = ['level', 'name']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['level'].widget.choices.pop(0)
# 교사 모델
class Teacher(models.Model):
# ...
REGURAL = 'A'
TEMPORARY = 'B'
LEVEL_CHOICES = (
(REGURAL, '정규'),
(TEMPORARY, '임시'),
)
level = models.CharField('등급', max_length=1,
choices=LEVEL_CHOICES,
default=REGURAL)
class Meta:
verbose_name = '교사'
verbose_name_plural = '교사'
def __str__(self):
return self.name
모델 필드가 blank=False 일 때 가능
class SubjectCV(CreateView):
# ...
def get_form(self):
form = super().get_form()
form.fields['subject_category'].empty_label = None
return form
# ...
폼의 해당 필드의 empty_label
의 값을 None
으로 설정해준다.
(원래는 문자열 '---------' 이 들어있음)
그러면 selected 된 항목 없이 필드가 렌더링된다.