我的表单上有一个名为location
的文件,我不需要预先加载所有选项,因为渲染需要很长时间。所以这就是我所拥有的:
class SearchForm(forms.Form):
location = forms.ModelMultipleChoiceField(
required=False,
label='Location',
queryset=Location.objects.none()
)
我使用ajax提供了自动完成功能。问题是表单验证失败,因为所选值不在queryset
中。有没有办法可以跳过location
的验证或类似的东西?
编辑:
我找到了办法,但我认为这不是最佳选择:
class SearchForm(forms.Form):
location = forms.MultipleChoiceField(
required=False,
label='Location',
validators=[]
)
我已将validators = []
添加到我的位置字段,并将ModelMultipleChoiceField
更改为MultipleChoiceField
。现在,在我的save
函数中,我有这个:
def save(self):
if not self.is_valid():
return false
locations = Location.objects.filter(id__in=self.data.getlist('location')).all()
由于locations
不在cleaned_data
,我只是使用data
中传递的位置ID查询数据库。
我仍然不认为这是一种干净的方式,所以任何其他解决方案都将受到赞赏。
答案 0 :(得分:0)