2010-07-09 1 views
7

Cerco di aggiungere i valori iniziali alla forma vuota di un modello shapeset_factory.empty_form valore iniziale per un modelformset_factory

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

Vorrei impostare il valore iniziale sul formset.empty_form, come posso ottenere questo?

+0

Siamo spiacenti, la domanda non ha molto senso. Cosa c'è di sbagliato nel codice che hai pubblicato? Hai un errore? Se sì, cosa? Non ha l'effetto desiderato? Se sì, qual è l'effetto desiderato e cosa succede realmente? –

+3

Hai ragione, il mio codice funziona bene, ma mi piacerebbe un modo per impostare il valore iniziale, non per i miei 2 moduli aggiuntivi (come nel mio esempio), ma per il empty_form (in formset.empty_form) – sam

+0

@sam hai risolto il problema? – MatheusJardimB

risposta

1

È possibile aggiungere valori iniziali al formset come indicato in modo chiaro in this other answer. Allora sei in grado di impostare il empty_form nel modello come ad esempio:

<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

Non sono sicuro che questa è la risposta corretta, ma un hack rapido per fare questo lavoro è quello di riassegnare semplicemente empty_form con la modulo che si desidera dopo l'inizializzazione del formset.

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 

Si noti che questo sovrascrive la proprietà empty_form del formset risultante.

+0

Non funziona, impossibile impostare l'attributo quando lo si imposta. – gabn88