我的图书类使用多对多字段来拯救读者。如果我想从某些书中删除读者,我可以使用循环遍历所有书籍对象以删除读者。但这太慢了。可以批量操作吗?
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)
是的。您可以使用以下方式访问底层 M2M 模型through属性 https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ManyToManyField.through,然后使用该模型在一个查询中执行删除操作。
Book.readers.through.objects.filter(book_id__in=[1, 2, 3, 4, 5],
user_id=foo_user)
.delete()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)