Python Django ModelChoiceField,动态查询集验证
我现在有这个表格:Python Django ModelChoiceField,动态查询集验证,python,django,python-2.7,django-forms,Python,Django,Python 2.7,Django Forms,我现在有这个表格: class PersonForm(forms.Form): article = forms.CharField(required=False) workshop = forms.ModelChoiceField(queryset=Program.objects.none(),
class PersonForm(forms.Form):
article = forms.CharField(required=False)
workshop = forms.ModelChoiceField(queryset=Program.objects.none(),
empty_label="----",
required=False,
label='Atelier')
def __init__(self, *args, **kwargs):
super(PersonForm, self).__init__(*args, **kwargs)
article = self.initial.get('article', None)
if article:
a = Article.objects.get(pk=article)
if a.workshop:
self.fields['workshop'].queryset = Program.objects.filter(event=a.event, workshop=True)
self.fields['workshop'].required = True
self.helper.layout.insert(4, Row1Field('workshop',))
用于检索所有车间的queryset是动态的,因此ModelChoiceField中的queryset属性设置为Program.objects.none()
,而动态queryset是在表单的\uUuInit\uUuU
方法中完成的
一切正常:在select(选择)中为workshop
显示的所有值均正常。但是当我发布表单时,出现了一个验证错误:“请选择一个有效的选项。此选项不在可用选项中。“
有什么我遗漏的吗 根据post时实例化表单的代码,
initial
可能无法传递。你可以试试:
article = self.initial.get('article', None) or self.data.get('article', None)
这将从表单POST数据中获取pk。根据POST时实例化表单的代码,
initial
可能无法传递。你可以试试:
article = self.initial.get('article', None) or self.data.get('article', None)
这将从您的表单发布数据中获取pk。请显示您的视图。请显示您的视图。