我有以下数据模型:
class ArticleSet(Model):
pass
class Article(Model):
article_set = ForeignKey(ArticleSet, related_name = 'articles')
attachments = ManyToManyField(Attachment, related_name='articles')
现在我有一个 ArticleSet 并想清除(而不是删除!)其中的所有附件。以下将起作用:
for article in article_set.articles.all():
article.attachments.clear()
但是,这将导致 article_set 中每篇文章的数据库查询。有没有办法在一次调用数据库中做同样的事情?我正在使用 Django 1.11。
ps 这个问题与如何根据过滤器删除多对多关系中的多个对象有关?,但在那个问题中,在删除关系之前没有模型遍历。