に動的変数を設定したい、私は__init__
を使って動的変数を渡しました。私はforms.pyのコードが正しいと思います問題はビューで変数を渡す方法ですか?私の一般的なビューまたはurlからforms.pyのquerysetに変数を設定します
forms.py:
class ContainerForm(forms.ModelForm):
vehicle=forms.ModelChoiceField(required=False,queryset=Vehicle.objects.all(),widget=forms.Select(attrs={'class':'form-control'}))
def __init__(self, *args, **kwargs):
vehicle_id = kwargs.pop('vehicle_id',None)
super(ContainerForm, self).__init__(*args, **kwargs)
if vehicle_id:
self.fields['vehicle'].queryset = Vehicle.objects.filter(id=vehicle_id)
views.py
class ContainerCreate(CreateView):
form_class = ContainerForm(id= vehicle_id)
template_name = 'vehicule_app/container_form.html'
エラーは言った:
Exception Value:'ContainerForm' object is not callable
誤差があるが、あなたは、インスタンスをインスタンス化されています
次に
get_form_kwargs
方法では、代わりにkwargsからするvehicle_id
を追加します。あなたはさらに助けることができる十分なコードを含んでいません。 'vehicle_id'はどこから来たのですか?どのように 'id'がフォームで使われていますか? – Alasdairあなたは正しいです、vehicle_idは私のモデルから来ています車 –
それは理にかなっていません。あなたの質問では、あなたは 'vehicle_id'を使っていますが、どこにも定義していません。値はどこから来るのですか? URL?その場合は、URLパターンを表示します。あなたはまた、 'id'がモデルフォームによってどのように使われているかを示していません。 – Alasdair