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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top