2012-07-23 8 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'})) 
関連する問題