gpt4 book ai didi

Django:更有效地从多对多关系中删除项目

转载 作者:行者123 更新时间:2023-12-02 00:55:39 26 4
gpt4 key购买 nike

我的图书类使用多对多字段来保存其读者。如果我想从某些书籍中删除读者,我可以使用循环遍历所有书籍对象以删除读者。但这太慢了。可以批量操作吗?

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)

最佳答案

是的。您可以使用through attribute访问底层M2M模型。 ,然后使用该模型在一个查询中执行删除操作。

Book.readers.through.objects.filter(book_id__in=[1, 2, 3, 4, 5], 
user_id=foo_user)
.delete()

关于Django:更有效地从多对多关系中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26839115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com