gpt4 book ai didi

django - 如何使用中间模型批量更新 django M2M 关系?

转载 作者:搜寻专家 更新时间:2023-10-30 22:09:06 28 4
gpt4 key购买 nike

我有两个模型和一个中间模型(简化示例):

class Book(model.Model):
title=models.CharField(max_length=255)
owner=models.ManyToManyField(User, through="Ownership")

class Ownership(models.Model):
user=models.ForeignKey(User)
book=models.ForeignKey(Book)
read=models.BooleanField()

现在我已经有很多 Book 对象并且想将所有现有的对象添加到一个用户。

目前我只看到一个管理器 API,它要么构造一个 Ownership 模型,要么添加一个 Ownership 对象(可能没有保存?)到一个 Book。这意味着对所有 Book 对象使用 python 循环,然后为每个对象构造一个 Ownership 对象。

是否有更有效的解决方案,例如 Book.objects.update(owner=user, read=True),它实际上在 django API 中是允许的?

请不要介意小的语法问题,代码是编造的,因为实际代码要长得多。

最佳答案

您可以使用 bulk_create()在一个查询中保存多个对象:

# First create an unsaved Ownership object for each book
objs = [Ownership(user=user, book=book, read=True) for book in Book.objects.all()]
# Save all ownerships in one query
Ownership.objects.bulk_create(objs)

关于django - 如何使用中间模型批量更新 django M2M 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37375493/

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