Pregunta

Este post se refiere a esto: Añadir fila para inlines dinámicamente en Django administrador

¿Hay una manera de añadir achive formsets línea SIN usando javascript? Obviamente, no habría una página de actualización involucrado.

Por lo tanto, si el formulario tiene un botón llamado 'añadir' ...

pensé que podría hacerlo de esta manera:

if request.method=='POST':
  if 'add' in request.POST:
    PrimaryFunctionFormSet = inlineformset_factory(Position,Function,extra=1)
    prims = PrimaryFunctionFormSet(request.POST)

Lo que me pareció que añadiría 1 cada vez, a continuación, rellenar el formulario con los datos de envío. Sin embargo, parece que el extra = 1 no añade 1 a los datos de envío.

¿Fue útil?

Solución

Lo tengo.

A veces es la solución más sencilla. Simplemente haga una copia de los datos request.POST y modificar el total de formularios.

Por ejemplo ..

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')

A continuación, sólo escupir la forma de forma normal. Mantiene sus datos, añade un editor en línea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top