[python/django] Form class 이용시 html 소스 추가

2017. 2. 22. 16:50 from Dev/python

Django의 ModelForm을 이용하다 보면 기본 양식으로는 사용하기 편하고 좋은데, 세세하게 주위 디자인과 맞춰주려면 어떡해야 할지 여기저기 찾아봐도 잘 나오지 않습니다.


저는 bootstrap에서 form을 이용해야 해서, form field에 class = "form-control"을 각 위젯마다 추가해주어야 하는데, 아래와 같은 방식으로 처리하였습니다:


class SupplierForm(ModelForm):
    class Meta:
        model = Supplier
        fields = ['name', 'memo', 'status', ]

    def __init__(self, *args, **kwargs):
        super(ModelForm, self).__init__(*args, **kwargs)
        self.fields['name'].widget.attrs.update({
            'class': 'form-control'
        })


ModelForm을 상속하였기 때문에, __init__에서 super의 __init__를 call 해주고, 각 필드의 속성을 update 해주는 방식으로 하니 되는군요. 좀더 복잡하게 추가하는 것도 가능합니다.

Posted by banasun :