<p>老实说没那么难,我有点明白了</p>
<p>这是我的表格</p>
<pre><code>class AddVehicleForm(forms.ModelForm):
def __init__(self, brand=None, *args, **kwargs):
super(AddVehicleForm, self).__init__(*args, **kwargs)
self.fields['model'].queryset = VehicleModel.objects.filter(brand=brand)
model = forms.ModelChoiceField(queryset=VehicleModel.objects.all())
vehicle_colour = forms.ChoiceField(choices=COLOURS)
vehicle_number = forms.CharField(max_length=8, widget=forms.TextInput(attrs={'placeholder': 'eg: CAB-1234'}))
class Meta:
model = Vehicle
fields = ['model', 'vehicle_colour', 'vehicle_number']
class AddVehicleFormPost(forms.ModelForm):
model = forms.ModelChoiceField(queryset=VehicleModel.objects.all())
vehicle_colour = forms.ChoiceField(choices=COLOURS)
vehicle_number = forms.CharField(max_length=8, widget=forms.TextInput(attrs={'placeholder': 'eg: CAB-1234'}))
class Meta:
model = Vehicle
fields = ['model', 'vehicle_colour', 'vehicle_number']
</code></pre>
<p>其中,表单<code>AddVehicleForm</code>允许我发送参数,如在my views.py中键入<code>form = AddVehicleForm(VehicleBrand.objects.filter(brand=brand).first())</code>所示,但当我想要保存表单时,我需要在forms.py中创建另一个表单,而无需执行<code>AddVehicleFormPost</code>中显示的任何查询</p>
<p>然后我随便做了,</p>
<pre><code>if request.method == "POST":
form = AddVehicleFormPost(request.POST)
if form.is_valid():
</code></pre>
<p>在我看来</p>