Django:在视图中设置inlineformset modelchoicefield查询

时间:2016-02-16 21:43:55

标签: python django django-forms

我一整天都在寻找解决问题的方法,没有运气,

我一直试图在视图中覆盖我的一个表单ModelChoiceField,因为要过滤我的模型选择的数据位于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动态生成我的formset

0 个答案:

没有答案