【问题标题】:Initial value for Formset hidden fieldFormset 隐藏字段的初始值
【发布时间】:2015-12-29 23:16:54
【问题描述】:

我对部署在表单集中的模型表单中隐藏字段的初始值有疑问。只有第一个表单在隐藏字段中具有初始值,其他表单为空。

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__'

在基于BaseInlineFormSet的表单中使用相同的模型md_changelog:

class md_changelogForm(BaseInlineFormSet)

      class Meta:
            model = md_changelog
            fields = '__all__'

并使用 inlineformset_factory 创建一个 formset 类:

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))

问题是post函数接收到request.POST时,只有formset数据的第一个表单中的post_docs隐藏字段填入初始值,其他没有。

如何初始化其他表单?

谢谢!

【问题讨论】:

    标签: python django hidden-field modelform formset


    【解决方案1】:

    如果您需要为给定表单域中的所有表单提供初始值,请查看文档: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))
    

    希望对您有所帮助!

    【讨论】:

    猜你喜欢
    • 2017-05-04
    • 2016-03-13
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多