鉴于这两个模型:
class Item(models.Model):
timestamp = models.DateTimeField()
class Source(models.Model):
items = models.ManyToManyField(Item, related_name="sources")
Run Code Online (Sandbox Code Playgroud)
我可以在给定时间之前找到所有Source的项目:
source.items.filter(timestamp__lte=some_datetime)
Run Code Online (Sandbox Code Playgroud)
如何有效删除与该查询匹配的所有项目?我想我可以尝试这样的事情:
items_to_remove = list(source.items.filter(timestamp__lte=some_datetime))
source.items.remove(*items_to_remove)
Run Code Online (Sandbox Code Playgroud)
但那似乎很糟糕.
请注意,我不想删除这些项目,因为它们也可能属于其他来源.我只想删除他们与特定来源的关系.