2010-07-09 5 views
7

Я пытаюсь добавить начальные значения в пустую форму modelformset_factory.Начальное значение empty_form для modelformset_factory

FormSet = modelformset_factory(MyModel, extra=2) 
formset = FormSet(queryset=MyModel.objects.none(), initial=[{'foo': 'bar'}, {'foo': 'bar'}]) 

Я хотел бы установить начальное значение formet.empty_form, как я могу это достичь?

+0

Извините, вопрос на самом деле не имеет смысла. Что не так с кодом, который вы опубликовали? Вы получаете сообщение об ошибке - если да, то что? Не имеет ли этого желаемого эффекта - если да, то каков желаемый эффект и что на самом деле происходит? –

+3

Вы правы, мой код работает нормально, но мне хотелось бы установить начальное значение, а не на мои 2 дополнительные формы (например, в моем примере), но на empty_form (в formset.empty_form) – sam

+0

@sam вы решили проблема? – MatheusJardimB

ответ

1

Вы можете добавить начальные значения в свой набор форм, как указано четко in this other answer. Тогда вы сможете установить empty_form в шаблоне, такие как:

<form action="/contact/" method="post">{% csrf_token %} 
    {% with formset.empty_form as form %} 
     {% for field in form %} 
     <div class="fieldWrapper"> 
      {{ field.errors }} 
      {{ field.label_tag }}: {{ field }} 
     </div> 
     {% endfor %} 
    {% endwith %} 
    <input type="submit" value="Submit" /> 
</form> 
0

Я не уверен, что это правильный ответ, но быстрый хак, чтобы сделать эту работу, чтобы просто переназначить empty_form с формы, которую вы хотите после инициализации набора форм.

formset = formset_factory(MyClass, **kwargs) 
empty = formset.empty_form 

# empty is a form instance, so you can do whatever you want to it 
my_empty_form_init(empty_form) 
formset.empty_form = empty_form 

Обратите внимание, что это перезаписывает свойство empty_form полученного набора форм.

+0

Не работает, не удается установить атрибут при его настройке. – gabn88

Смежные вопросы