Django: Aggiunta righe linea formset senza javascript
-
20-09-2019 - |
Domanda
Questo post si riferisce a questo: Aggiungi fila per inlines dinamicamente in Django amministrazione
C'è un modo per aggiungere achive formsets linea SENZA utilizzando JavaScript? Ovviamente, ci sarebbe una pagina-refresh coinvolto.
Quindi, se il modulo ha avuto un pulsante chiamato 'aggiungere' ...
ho pensato che avrei potuto fare in questo modo:
if request.method=='POST':
if 'add' in request.POST:
PrimaryFunctionFormSet = inlineformset_factory(Position,Function,extra=1)
prims = PrimaryFunctionFormSet(request.POST)
Ho pensato che dovrebbe aggiungere 1 ogni volta, quindi popolare il modulo con i dati post. Tuttavia, sembra che l'extra = 1 non aggiunge 1 ai dati post.
Soluzione
Ci sono.
A volte è la soluzione più semplice. Basta fare una copia dei dati request.POST e modificare il totale delle forme.
per esempio ..
if request.method=='POST':
PrimaryFunctionFormSet = inlineformset_factory(Position,Function)
if 'add' in request.POST:
cp = request.POST.copy()
cp['prim-TOTAL_FORMS'] = int(cp['prim-TOTAL_FORMS'])+ 1
prims = PrimaryFunctionFormSet(cp,prefix='prim')
Poi basta sputare forma come normale. Mantiene i dati, aggiunge un editor in linea.