2012-02-04 27 views
56

Necesito seleccionar varios objetos para eliminar de mi base de datos en django utilizando una página web. No hay ninguna categoría para seleccionar, así que no puedo eliminar de todos ellos de esa manera. ¿Tengo que implementar mi propio formulario de eliminación y procesarlo en django o django tiene una manera de hacerlo? Como se implementó en la interfaz de administración.Eliminar múltiples objetos en django

Respuesta

101

Puede eliminar cualquier QuerySet que desee. Por ejemplo, para borrar todas las entradas de blog con algún modelo Post

Post.objects.all().delete() 

y eliminar cualquier mensaje con una futura fecha de publicación

Post.objects.filter(pub_date__gt=datetime.now()).delete() 

Usted, sin embargo, es necesario llegar a una forma de restringir abajo de su QuerySet. Si solo desea una vista para eliminar un objeto en particular, consulte el delete generic view.

EDIT:

Lo siento por el malentendido. Creo que la respuesta está en algún punto intermedio. Para implementar el suyo, combine ModelForm sy generic views. De lo contrario, busque en aplicaciones de terceros que ofrecen una funcionalidad similar. En un related question, la recomendación fue django-filter.

+1

No ha entendido mal la pregunta. Entiendo que puedo borrar todo. Pero necesito seleccionar los objetos para eliminar con un formulario en una página web. Y luego procesar los datos devueltos desde el formulario en mi views.py. A continuación, repite lo que se devuelve en la forma de eliminar como un bucle a través de los datos. Pero quería saber cuál es la mejor práctica para implementar esto en django. – Dean

+0

¡Ah, error mío! Yo usaría una aplicación de terceros o vistas genéricas con 'ModelForm's. –

+5

@Dean, échale un vistazo a esa vista de eliminación. O simplemente puede escribir su propia vista ... Es decir, en última instancia, probablemente reciba una lista de PK y una llamada a eliminar en su modelo ... 'MyModel.objects.filter (id__in = request.POST.getlist ('delete_list')) .delete() 'y estoy seguro de que quieres algo para asegurarte de que una persona al azar no pueda eliminar todos los objetos en tu DB adivinando PKs. –

Cuestiones relacionadas