2010-09-27 13 views
123

Quiero eliminar un registro en particular. Tal como¿Cómo eliminar un registro en los modelos de Django?

delete from table_name where id = 1; 

¿Cómo puedo hacer esto en un django model?

+10

Gracias por la pregunta. A veces RTFM toma mucho más tiempo que una búsqueda de Google y SO, como lo demuestra el número de votos de respuesta y el número de visitas –

+3

de acuerdo con @Freedom_Ben, pero para los lectores futuros que les gusta el manual de f * de todos modos, esto es lo que tú ' Está buscando: https://docs.djangoproject.com/en/dev/topics/db/queries/#topics-db-queries-delete – Dinei

Respuesta

290

Hay un par de maneras:

Para eliminar directamente:

SomeModel.objects.filter(id=id).delete() 

para eliminarlo de una instancia:

instance = SomeModel.objects.get(id=id) 
instance.delete() 
+22

Tenga en cuenta que el primero no llamará al método .delete() del objeto , por lo tanto, si tiene un código de "limpieza" en ese método, no se lo llamará. Generalmente no es un problema, pero vale la pena tenerlo en cuenta. –

+6

@Matthew Schinckel: eso es cierto. Si desea tener un método de eliminación personalizado de lo que debería estar utilizando la señal 'pre_delete' o' post_delete' en su lugar. – Wolph

+1

No sé cuál es el caso después de DJango 1.4, pero esto es realmente recuperar todos los PK y luego eliminarlos por esos PK. Por ejemplo, si elimina por un campo arbitrario, esto puede ser mucho más lento que la contraparte SQL ... :( –

Cuestiones relacionadas