2012-07-23 3 views
5

내 ModelForm 내에서 모델의 모든 항목에 직접 바인딩되지 않은 드롭 다운을 만들었습니다. 그러므로 인스턴스화 할 때 쿼리 세트를 전달합니다.forms.ModelChoiceField에 속성을 정의하는 방법?

class CallsForm(ModelForm): 
    def __init__(self, company, *args, **kwargs): 
     super(CallsForm, self).__init__(*args, **kwargs)   
     self.fields['test_1'].queryset = company.deal_set.all() 

    test_1  = forms.ModelChoiceField(queryset = '') 

이 잘 작동합니다. 그러나 어떻게 그것을위한 몇 가지 속성을 지정합니까?

나는 보통 메타에서 이렇게 다른 모델 바인딩 - 위젯

:

class Meta: 
     model = Conversation 
     widgets = { 
        'notes': forms.Textarea(attrs={'class': 'red'}),      
        }     

하지만 내 경우에는 그것을 무시하는 것은 의미가 없습니다.

나는 운이없는 인스턴스에 따라 속성을 설정했습니다.

test_1  = forms.ModelChoiceField(attrs={'class':'hidden'}, queryset = '') 

하지만은 말한다 :

__init__() got an unexpected keyword argument 'attrs'가 확실히있는 방법이 있어야합니다 ...

답변

22

attrs 위젯이 아닌 필드에 대해서만 유효합니다. 시도 :

test_1 = forms.ModelChoiceField(queryset = '', widget=forms.Select(attrs={'class':'hidden'})) 
관련 문제