0
我的表单上有一个名为location
的域,我不需要预先加载所有选项,因为它需要很长时间才能呈现。所以这是我的:Django form 10M选项的ModelMultipleChoiceField
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查询数据库。
我仍然不认为这是一个干净的方式,所以任何其他解决方案将不胜感激。
感谢。我会检查出来的。但我想找到一种解决方法,无需任何外部插件。 – AliBZ