12

ModelForm内に、モデル上の何にも直接バインドされていないドロップダウンを作成しました。したがって、インスタンス化時にクエリセットを渡します。

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 = '')  

これは問題なく機能します。ただし、いくつかの属性を指定するにはどうすればよいですか?

他のmodel-bound-widgetsの場合、私は通常これをMetaで行います。

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'

確かに方法があるはずです...

4

1 に答える 1

29

attrsフィールドではなく、ウィジェットでのみ有効です。試す:

test_1 = forms.ModelChoiceField(queryset = '', widget=forms.Select(attrs={'class':'hidden'}))
于 2012-07-23T18:02:29.877 に答える