【发布时间】:2016-09-19 10:03:42
【问题描述】:
我有两个模型和一个中间模型(简化示例):
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中实际上是允许的?
请不要介意小的语法问题,代码是编造的,因为实际代码要长得多。
【问题讨论】:
-
也许您的意思是
ManyToManyField和through而不是Many2Many和intermediate? -
Gotcha,只是将代码编写为伪代码;-)。当然,实际代码具有正确的名称。问题是如何批量更新它们(最好在后端产生一个大 SQL 查询)。