¿Cómo elimino varios objetos en una relación ManyToMany basada en un filtro?
Dados estos dos modelos:
class Item(models.Model):
timestamp = models.DateTimeField()
class Source(models.Model):
items = models.ManyToManyField(Item, related_name="sources")
Puedo encontrar todos los elementos de una fuente antes de un tiempo determinado usando esto:
source.items.filter(timestamp__lte=some_datetime)
¿Cómo elimino eficientemente todos los elementos que coinciden con esa consulta? Supongo que podría intentar algo como esto:
items_to_remove = list(source.items.filter(timestamp__lte=some_datetime))
source.items.remove(*items_to_remove)
Pero eso parece malo.
Tenga en cuenta que no quieroEliminar estos elementos, ya que también pueden pertenecer a otras fuentes. Solo quiero eliminar su relación con la fuente específica.