2010-03-01 18 views
7

¿Es posible hacer que Django elimine automáticamente los conjuntos de formularios que no están presentes en la solicitud?Eliminar dinámicamente formularios en línea en Django

Así que por ejemplo si tenía tres formularios en línea representados en HTML cuando cargué mi página de edición y uso javascript para eliminar dos cuando la solicitud es un proceso, Django ve que esos dos formularios ya no son suyos y los elimina.

Respuesta

8

Sí, es posible utilizando algunos métodos diferentes.

Lo primero es copiar la forma en que se hace en la aplicación de administración de Django, que es tener una casilla de verificación con una etiqueta similar a "¿Borrar?". Luego, cuando está procesando el formset más adelante en la solicitud POST, verifica si la casilla de verificación es True y, de ser así, elimine el registro. Probablemente esto no sea lo que está buscando, ya que usó la palabra "dinámicamente" en el título de su pregunta :)

Así que un segundo método dinámico sería usar Javascript para "ocultar" el registro eliminado en el página y establecer la casilla de verificación Eliminar en True. Luego procesa el formset de la misma manera que la primera opción anterior. Ver django-dynamic-formset para código para eliminar formset de esta manera.

La tercera manera dinámica sería usar Ajax y cuando se hace clic en el botón Eliminar, JS llama a una vista de eliminación para eliminar el registro y también eliminar el formset del HTML. No puedo indicarle ningún código de ejemplo para esto, pero creo que el segundo método anterior es mejor de todos modos, ya que puede mantener todos los códigos de autenticación y validación de formularios estándar en un solo lugar.

Cuestiones relacionadas