小编bun*_*ero的帖子

如何基于过滤器删除ManyToMany关系中的多个对象?

鉴于这两个模型:

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)

但那似乎很糟糕.

请注意,我不想删除这些项目,因为它们也可能属于其他来源.我只想删除他们与特定来源的关系.

django manytomanyfield

16
推荐指数
2
解决办法
9437
查看次数

标签 统计

django ×1

manytomanyfield ×1