Como faço para remover vários objetos em um relacionamento ManyToMany com base em um filtro?
Dados esses dois modelos:
class Item(models.Model):
timestamp = models.DateTimeField()
class Source(models.Model):
items = models.ManyToManyField(Item, related_name="sources")
Eu posso encontrar todos os itens de uma fonte antes de um determinado tempo usando este:
source.items.filter(timestamp__lte=some_datetime)
Como removo com eficiência todos os itens que correspondem a essa consulta? Suponho que eu poderia tentar algo como isto:
items_to_remove = list(source.items.filter(timestamp__lte=some_datetime))
source.items.remove(*items_to_remove)
mas isso parece ruim.
Note que eu não queroexcluir esses itens, pois também podem pertencer a outras fontes. Eu só quero remover o relacionamento deles com a fonte específica.