我一整天都在寻找解决问题的办法,但运气不好
我一直在试图重写视图中窗体的一个ModelChoiceField
,因为筛选modelchoice的数据在views
我读过一些你可以使用的东西:
def somefunction(request):
form = someform(request.POST)
form.fields['formfield'] = forms.ModelChoiceField(queryset=YourModel.objects.filter(...))
但我用的是inlineformset_factory
我试过像这样在各个领域循环:
for item in form1:
item.fields['formfield'] = forms.ModelChoiceField(queryset=YourModel.objects.filter(...))
但这会产生一个错误:[u'ManagementForm data is missing or has been tampered with']
但是我确实有{{ my_formset.management_form }}
,如果我删除循环部分并正常呈现表单集,我的测试应用程序就可以工作
以下是我的观点:
myformset1 = inlineformset_factory(parentmodel, childmodel, form = formset1, extra = 1, can_delete=True)
myformset2 = inlineformset_factory(parentmodel, childmodel2, form = formset2, extra = 1, can_delete=True)
def somefucntion(request):
form = mymainform(request.POST)
form1 = myformset1(request.POST, prefix='f1')
form2 = myformset2(request.POST, prefix='f2')
for item in form1:
item.fields['form1field'] = forms.ModelChoiceField(queryset=YourModel.objects.filter(...))
if request.method == 'POST':
if form.is_valid():
cde = form.save(commit = False)
form1 = myformset1(request.POST, prefix='f1', instance = cde)
form2 = myformset2(request.POST, prefix='f2', instance = cde)
if form1.is_valid():
if form2.is_valid():
form.save()
form1.save()
form2.save()
else:
form = mymainform()
form1 = myformset1(instance = myparentmodel, prefix='f1')
form2 = myformset2(instance = myparentmodel, prefix='f2')
return render(request, 'frontend/apply.html', {'form': form, 'form1':form1, 'form2': form2})
任何提示或建议将不胜感激,谢谢
编辑
我正在使用Django-dynamic-formset动态生成我的表单集
目前没有回答
相关问题 更多 >
编程相关推荐