Как мне удалить несколько объектов в отношении ManyToMany на основе фильтра?

Учитывая эти две модели:

class Item(models.Model):
    timestamp = models.DateTimeField()

class Source(models.Model):
    items = models.ManyToManyField(Item, related_name="sources")

Я могу найти все элементы источника до заданного времени, используя это:

source.items.filter(timestamp__lte=some_datetime)

Как мне эффективно удалить все элементы, соответствующие этому запросу? Думаю, я мог бы попробовать что-то вроде этого:

items_to_remove = list(source.items.filter(timestamp__lte=some_datetime))
source.items.remove(*items_to_remove)

, но это кажется плохим.

Обратите внимание, что я не хочу удалять эти элементы, поскольку они также могут принадлежать другим источникам. Я просто хочу удалить их связь с конкретным источником.

16
задан bunnyhero 17 January 2011 в 23:42
поделиться