Questo è più o meno quello che sto cercando di fare:Django: come aggiungere un modulo aggiuntivo a un formset dopo che è stato costruito?
def post(request):
VehicleFormSet = formset_factory(StaffVehicleForm)
if request.method == 'POST':
vehicle_formset = VehicleFormSet(request.POST)
if 'add_vehicle' in request.POST:
if vehicle_formset.is_valid():
form_count = vehicle_formset.total_form_count()
vehicle_formset.forms.append(vehicle_formset._construct_form(form_count))
In sostanza, se un utente fa clic sul pulsante "Aggiungi" e il loro ingresso è valido, voglio aggiungere un'altra forma vuota per il formset, e nascondere il precedente.
Il problema con il codice precedente è che non riesco a capire come aumentare total_form_count()
. Il modo in cui lo ho ora, funzionerà una volta, e quindi se lo preme di nuovo, non accadrà nulla, presumibilmente perché lo form_count
è lo stesso. Non mi piace anche chiamare _construct_form
e fare affidamento sulla parte interna.
l'attributo '' empty_form' su BaseFormSet' potrebbe essere utile qui. http://docs.djangoproject.com/en/1.2/topics/forms/formsets/#empty-form "restituisce un'istanza di modulo con un prefisso di' __prefix__' per un utilizzo più semplice nelle forme dinamiche con JavaScript "Puoi mantenerlo come un modello da clonare credo. –
Non voglio farlo in JS però ... – mpen
Oh buon consiglio Reiner Gerecke! La prossima volta la userò :-) – Humphrey