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

끝.

author-profile
Written by bj