class StatusForm(ModelForm):
bases = forms.ModelMultipleChoiceField(
queryset=Base.objects.all(), #this should get overwritten
widget=forms.SelectMultiple,
)
class Meta:
model = HiringStatus
exclude = ('company', 'date')
def __init__(self, *args, **kwargs):
super(StatusForm, self).__init__(*args, **kwargs)
if kwargs.has_key('bases_queryset'):
self.fields['bases'].queryset = kwargs['bases_queryset']
私は、私はそうのようなフォームを作成することができますこのフォームにオプションを追加する追加:クラスへ** kwarg
form = StatusForm(bases_queryset=Base.objects.filter([...])
しかし、私は何とかそのキーワードを「追加」する必要がありますがそれが認識されるようにクラスへの引数。あなたはスーパーコンストラクタにkwargsからを開梱しているためだ
__init__() got an unexpected keyword argument 'bases_queryset'
より良いアプローチを単純です: bases_queryset = kwargs.pop(「bases_queryset」、なし) これは、キーを辞書から削除し、そこに存在する場合はその値を返し、キーが存在しない場合はNoneに初期化します。 –
はい、それは良いです:私は完全に.popメソッドを忘れてしまった – Keeper