2010-05-26 12 views
6

si tengo dos modelos simples:Django: suprimir todas las relaciones M2M

class Tag(models.Model): 
    name = models.CharField(max_length=100) 

class Post(models.Model): 
    title = models.CharField(max_length=100) 
    tags = models.ManyToManyField(Tag, blank=True) 

dado un objeto postal con una serie de etiquetas add ed a ella, sé caliente para eliminar cualquiera de ellos, pero ¿cómo hacerlo una masa eliminar (eliminar todo)? Gracias

Respuesta

21

¿Has probado Post.tags.clear()?

+0

Se necesita acceder a los 'through' modelo para hacer la consulta sobre la gerente de la relación. https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ManyToManyField.through .... Ver mi respuesta en este hilo – Rach

-3

Si necesita eliminar solo la relación para todas las instancias entre 2 modelos, puede hacerlo accediendo al Administrador de la tabla de relaciones. La tabla de relación M2M puede acceder a través MyModel.relations.through por lo que para la eliminación de las relaciones se convierte en fácil:

MyModel.relations.through.objects.all().delete() 

referencia:

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ManyToManyField.through

+0

Leyó mal la pregunta: "dado un objeto Post "significa que el pistacho quiere ** borrar solo las relaciones con ese 'Mensaje' específico, ** no con cada relación entre cada 'Publicación' y 'Etiqueta' en toda la base de datos. En este caso, llamar a '.tags.clear()' en el objeto 'Post' es exactamente lo que quiere el pistacho. –

+0

Gracias por corregirme. El título fue engañoso y estaba buscando hacer lo que hice, así que actualicé este hilo. – Rach

Cuestiones relacionadas