Puse un poco de Javascript del lado del cliente en mi plantilla que permite a un usuario agregar campos dinámicamente a un formulario. Mi problema es que estos campos se limpian en form.cleaned_data
, por lo que no puedo acceder a ellos de esa manera.Los campos de formulario agregados dinámicamente se eliminan en form.cleaned_data
Todos los campos están disponibles en request.POST
, así que podría resolver este problema con eso, pero quiero hacer esto de la "manera correcta" y creo que la solución está en usar formularios django en lugar de leer la solicitud directamente.
Intenté sobreescribir form.clean()
, pero parece que los datos ya se han ido para cuando llegó.
Otros detalles: Estoy nombrando estos campos fieldname_x
, donde x
es un número. En request.POST
, request.POST['fieldname']
es una lista de todos los valores, pero form.cleaned_data
contiene solo el último valor de cada lista.
Ralph, sugeriría que usted ha ido en ello el camino más largo. Aproveche Python y el sistema Django de hacer las cosas. Cree dinámicamente modelos y formularios donde sea necesario. Ver mi respuesta –
Su "pitón de apalancamiento" "y Django" están en desacuerdo. Ciertamente has aprovechado la dinámica de Python, pero lo hice de la manera Django. Específicamente pusieron 'empty_form' allí para que pueda usarlo en sus scripts JS y agregar formularios/campos a un formset, así es como lo hice. No es necesario hackear campos adicionales. – mpen
Interpreto la descripción de forma vacía como permitir que javascript agregue formularios adicionales a un formset, no campos adicionales a un formulario. Tú mismo dijiste que la forma en que lo hiciste fue dolorosa, involucró mucho procesamiento de cuerdas y simplemente maldad. Mi solución es 4 líneas de código y es extremadamente fácil de mantener. –