2016-08-10 8 views
0

저는 파이썬 클래스를 동적으로 생성하려고합니다. 여기, 장고 형태.동적으로 장고 양식을 생성합니다.

class BankForm(forms.Form): 
    name = forms.CharField() 

for i in range(10): 
    setattr(BankForm, 'contact_' + str(i), forms.CharField()) 

그러나 양식을 사용할 때는 name 필드 만 표시됩니다. 그것을하는 방법에 대한 조언?

편집 : 그것은 하나 개의 솔루션을처럼 약 modelform_factory 밖으로 찾을 보이는

EDIT2 : 나는 당신과 같은 형태의 __init__ 방법에 필드를 추가 할 수 있습니다

+0

아마도 'MyForm'에 속성을 설정하고'BankForm'에 속성을 설정하지 않았기 때문일 수 있습니다. 하지만 오타가있을 수 있습니까? – marcusshep

+1

oops, edited, no, 정의되지 않은 변수 예외가 발생했습니다 – damio

+1

'modelform_factory' 메소드는 모델 양식을 만드는 데 유용하지만 정규 양식에 필드를 추가하려는 경우에는 적합하지 않습니다. add_fields' 메쏘드는 양식이 아닌 * formsets *를위한 것입니다. – Alasdair

답변

4

를 사용할 수있는 add_fields 방법이있다처럼 더 나은, 보이는 다음과 같습니다 :

class BankForm(forms.Form): 
    name = forms.CharField() 

    def __init__(self, *args, **kwargs): 
     super(BankForm, self).__init__(*args, **kwargs) 
     for i in range(10): 
      self.fields['contact_' + str(i)] = forms.CharField() 
+0

감사합니다. 이미 답변되었으므로 중복 된 것으로 표시됩니다. https://stackoverflow.com/questions/6142025/dynamically-add-field-to-a-form – damio

관련 문제