在ModelFormset中设置初始值

在ModelFormset中设置初始值

问题描述:

根据documentation为绑定到模型的字段提供初始值是不可能的。在ModelFormset中设置初始值

在我的模型形式,虽然我已经创建了一个额外的未绑定字段:

class DealCForm(ModelForm): 
    attach_deal_conversation = forms.BooleanField(required=False, initial=False) 

因此,我想,如果某些条件得到满足来设置这个值。

查看:

deal_formset = modelformset_factory(Deal, form=DealCForm, extra=0) 

if (request.POST) 
     pass 
else:     
     opendeal_formset = deal_formset(queryset=formset_query) 
variables = RequestContext(request, {'opendeal_formset' : opendeal_formset) 
return render_to_response('conversation.html', variables) 

在视图中,只需将它发送到模板之前,我已经建立直接的价值,但它不工作:

for dfm in deal_formset: 
      for odfm in opendeal_formset: 
       if dfm.pk == odfm.pk: 
        odfm.attach_deal_conversation = True; 

但不起作用。任何想法如何设置一个未绑定的字段的初始值?

非常感谢

+0

这不是文件说什么。它表示初始值不适用于*预先存在*实例的表单;它们确实适用于“额外”表单或尚未保存的表单。这是理想的,因为如果它是现有的实例,则希望其保存的数据最初显示,而不是默认的初始数据。 – 2012-08-03 19:41:12

+0

嗯,我没有任何额外的形式。但是,我可以设置一个未绑定字段的初始值吗?我想我需要将它作为一个数组与内部的元组传递... – Houman 2012-08-03 19:45:55

这将运行对我来说:

for form in opendeal_formset: 
    form.fields['attach_deal_conversation'].initial=True