Django – modelform 사용자 필드 추가 – 필드 순서 변경 방법

목록으로 돌아가기

그냥 model 에 사용된 필드만 쓰면 별 고민이 없는데, 꼭 쓰다보면 사용자 정의 필드를 넣어줘야 할 때가 있다. 이때마다 생각이 안나서 일단 정리

필드를 그냥 변수 정의하듯이 정의해서 사용하면 된다.

class ShippingProductUpdateForm(BSModalModelForm):    title = ""    update_firmware_version = forms.CharField(label=_("*업데이트버전"), widget=forms.TextInput(attrs={"readonly": True}))    class Meta:        model = ShippingProduct        fields = ["product", "serial", "status", "version", "update_firmware_version", "date_shipping", "shipping_company"]        labels = {            "shipping_company": _("출고회사"),            "product": _("*상품"),            "serial": _("*시리얼"),            "status": _("*상태"),            "date_shipping": _("*출고일"),        }        widgets = {            "shipping_company": forms.Select(attrs={"class": ""}),            "product": forms.Select(attrs={"class": "", "placeholder": "상품"}),            "serial": forms.TextInput(attrs={"class": ""}),            "version": forms.TextInput(attrs={"readonly": True}),            "update_firmware": forms.TextInput(attrs={"readonly": True}),            "status": forms.Select(attrs={"class": ""}),            "date_shipping": forms.DateInput(attrs={"type": "date", "required": True}),        }    def __init__(self, *args, **kwargs):        super().__init__(*args, **kwargs)        self.title = "출고상품 수정"        self.fields["update_firmware_version"].initial = self.instance.update_firmware.version

필드 순서는 class Meta: 부분에 fields 에 적힌 순서대로 보여주니까 사용자 정의 필드도 여기에 이름을 추가하면 된다. 간단

참고 사이트

author-profile
Written by bj