Django – ModelForm __init__() 함수 예제
그냥 예제 ModelForm init() 함수에서 수행할 것을 몇 가지 저장해 둔다.
- 원하는 필드만 보여주기 fields
- 필요 없는 필드 제거해서 보여주기 exclude
- labels 를 이용한 원하는 라벨 표기
- widgets 으로 원하는 form 객체 가져다 놓기
- 필드에 필터링 해서 데이터를 올려줄 수 있는 queryset
- empty label 보여주지 않게 하기
class ProductProfileForm(forms.ModelForm): class Meta: model = ProductProfile fields = ["company", "name", "product", "fwver1"] exclude = ["updated_at", "created_at"] labels = { "company": _("*회사"), "name": _("프로파일명"), "product": _("상품명"), "fwver1": _("펌웨어"), } widgets = { "company": forms.Select(attrs={"class": "form-select"}), "name": forms.TextInput(attrs={"class": "form-control flex-fill", "placeholder": "프로파일명 (중복허용안함)"}), "product": forms.Select(attrs={"class": "form-select flex-fill", "required": True}), "fwver1": forms.Select(attrs={"class": "form-select flex-fill", "required": False}), } def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['fwver1'].queryset = Firmware.objects.filter(dtype='F') # empty field label --------- 없애기 self.fields['product'].empty_label = None
끝.