我有一个关于在django表单中使用不同查询集的问题。
所以我有一个表单要求用户从第一个下拉列表中选择一个选项,这将改变另一个下拉列表中的查询集。
class TransportForm(myformclass):
trans_type_choices = ['car', 'bus', 'plane', 'train']
trans_type = forms.ChoiceField(choices=model_type_choices, label='Select the model you wish to change')
model = forms.ModelChoiceField(queryset=Label.objects.none(), label='Choose a model')
我的表单使用ajax来执行正确的查询并返回值;我不想有单独的字段,因为查询计数太高了。
我的问题是,当我提交表单时,查询集对于验证是错误的。我应该以某种方式覆盖表单验证并阻止这种情况发生吗?
提前致谢
答案 0 :(得分:0)
我认为问题是django ModelChoiceField
使用queryset
来存储所有可能的选择。如果您更改前端代码以传入id
中不在queryset
中的Label.objects.all()
,则django将无法通过验证。
一个简单的解决方案是使用ModelChoiceField
作为trans_type
的查询集,但是根据另一个选择更改前端。如果您担心安全问题,可以编写自己的验证,以便仔细检查model
和<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/testgoogleapikey" />
之间的相关性。