2010-07-09 15 views
7

Intento agregar valores iniciales a la forma vacía de un modeloformset_factory.valor inicial de empty_form para un modeloformset_factory

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

Me gustaría establecer el valor inicial de formset.empty_form, ¿cómo puedo lograrlo?

+0

Lo siento, la pregunta no tiene sentido. ¿Qué pasa con el código que has publicado? ¿Recibes un error? Si es así, ¿qué? ¿No tiene el efecto deseado? De ser así, ¿cuál es el efecto deseado y qué sucede realmente? –

+3

Tienes razón, mi código funciona bien, pero me gustaría una forma de establecer el valor inicial, no a mis 2 formularios adicionales (como en mi ejemplo), sino a la forma_vacío (en formset.empty_form) – sam

+0

@sam has resuelto ¿el problema? – MatheusJardimB

Respuesta

1

Puede agregar valores iniciales a su formset como se indica claramente in this other answer. Entonces usted es capaz de establecer el empty_form en la plantilla como:

<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

No estoy seguro de que esta es la respuesta correcta, pero un corte rápido para hacer este trabajo es volver a asignar simplemente con el empty_form forma que desee después de la inicialización del conjunto de formularios.

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 

Tenga en cuenta que esto sobrescribe la propiedad empty_form del formset resultante.

+0

No funciona, no puede establecer el atributo al configurarlo. – gabn88

Cuestiones relacionadas