2015-10-01 3 views
1

У меня проблема с начальным значением скрытого поля в модели, развернутой в наборе форм. Только первая форма имеет начальное значение в скрытом поле, а остальные пустые.Исходное значение для скрытого поля 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) 

И класс formet создается в виде класса:

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, только post_docs скрытые поля в первой форме данных formset заполняется с начальным значением, другие нет.

Как я могу инициализировать другие формы?

Спасибо!

ответ

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

Спасибо !, но в форме мы добавляем новые формы с помощью jQuery Formset pluguin, в этом случае нам нужно будет присвоить значение скрытого поля javascript? –

+1

У меня нет возможности проверить его, но потенцированно вы можете изменить способ инициализации нового поля в заданном наборе форм. Взгляните на этот вопрос - [http://stackoverflow.com/questions/1500121/django-how-to-set-initial-values-for-a-field-in-an-inline-model-formset](http : //stackoverflow.com/questions/1500121/django-how-to-set-initial-values-for-a-field-in-an-inline-model-formset) - это должно решить вашу проблему. – user1544500