Han*_*Dai 2 django many-to-many bulk
我的书类使用多对多字段来保存读者.如果我想从某些书籍中删除阅读器,我可以使用循环来浏览所有书籍对象以删除阅读器.但它太慢了.是否可以在批量操作中执行此操作?
class Book(models.Model):
readers = models.ManyToManyField(User, related_name='books')
#Remove reader 'foo' from book 1, 2, 3, 4, 5. However, it is slow.
for book in Book.objects.filter(id__in=[1, 2, 3, 4, 5])
book.readers.remove(R)
Run Code Online (Sandbox Code Playgroud)
是.您可以使用该through属性访问基础M2M模型,然后使用该模型在一个查询中执行删除.
Book.readers.through.objects.filter(book_id__in=[1, 2, 3, 4, 5],
user_id=foo_user)
.delete()
Run Code Online (Sandbox Code Playgroud)