2015-10-01 29 views
1

我在模板表单中部署的formset中隐藏字段的初始值有问题。只有第一种形式在隐藏字段中具有初始值,其他字段为空。Formset隐藏字段的初始值

的的ModelForm是:

class md_changelogFormModel(forms.ModelForm): 
    post_docs = forms.CharField(widget=forms.HiddenInput(), 
           initial="READY_FOR_RUN") 
    # Other fields 

    class Meta: 
     model = md_changelog 
     fields = '__all__' 

同样的模型md_changelog以基于在BaseInlineFormSet形式使用:

class md_changelogForm(BaseInlineFormSet) 

     class Meta: 
      model = md_changelog 
      fields = '__all__' 

而且一个formset类与inlineformset_factory创建:

md_changelogFormSet = inlineformset_factory(md_orderlog, md_changelog, 
              form=md_changelogFormModel, 
              formset=md_changelogForm, 
              extra=1, max_num=20) 

而formset类是在基于类的视图中实例化的:

def get(self, request, *args, **kwargs): 
    """ 
    Handles GET requests and instantiates blank versions of the form 
    and its inline formsets. 
    """ 
    self.object = None 
    form_class = self.get_form_class() 
    form = self.get_form(form_class) 

    md_changelog_form = md_changelogFormSet(initial=[{'post_docs':'READY_FOR_RUN'}]) 

    return self.render_to_response(
     self.get_context_data(form=form, 
           md_changelog_form=md_changelog_form)) 

的问题是,当交函数接收request.POST,只隐藏字段在该formset数据的第一形式填充有初始值的post_docs,其余没有。

如何初始化其他表单?

谢谢!

回答

0

如果您需要为所有形式在给定的表单字段提供初始值,请看看文档:https://docs.djangoproject.com/en/1.8/topics/forms/formsets/#using-initial-data-with-a-formset

因此,我以初始化相同的初始日期的所有3场查看你应该改变你的代码为:

def get(self, request, *args, **kwargs): 
    """ 
    Handles GET requests and instantiates blank versions of the form 
    and its inline formsets. 
    """ 
    self.object = None 
    form_class = self.get_form_class() 
    form = self.get_form(form_class) 

    md_changelog_form = md_changelogFormSet(initial=[ 
     {'post_docs':'READY_FOR_RUN'}, 
     {'post_docs':'READY_FOR_RUN'}, 
     {'post_docs':'READY_FOR_RUN'}, 
    ]) 

    return self.render_to_response(self.get_context_data(form=form, md_changelog_form=md_changelog_form)) 

希望帮助!

+0

Thanks !,但是在表单中我们用jQuery Formset pluguin添加了新的表单,在这种情况下,我们需要为javascript分配隐藏的字段值? –

+1

我没有测试它的可能性,但从本质上来说,您可以更改给定formset中新字段的初始化方式。看看这个问题 - [http://stackoverflow.com/questions/1500121/django-how-to-set-initial-values-for-a-field-in-an-in-line-model-formset](http ://stackoverflow.com/questions/1500121/django-how-to-set-initial-values-for-a-field-in-an-inline-model-formset) - 这应该可以解决你的问题。 – user1544500