ModelChoiceFieldの選択肢を動的に変えたいとき、__init__でself.fieldsを参照して入れ替えることができる class SelectForm(forms.Form): item = forms.ModelChoiceField(queryset=Item.objects.none()) def __init__(self, category, *args, **kwargs): super(SelectForm, self).__init__(*args, **kwargs) if category: qs = Item.objects.filter(category=category) self.fields['item'].queryset = qs ただ同じ方法でなんでも設定できるわけではなくて、例えばIntegerFieldのmin_valueやmax_