我有三个型号。文章、标签和订阅者。在帖子和订阅者之间存在多对多关系,在标签和订阅者之间存在另一种多对多关系。帖子和标签之间存在ForeignKey关系。我想将给定帖子的所有订阅者添加到它的关联标记中。我可以通过执行以下操作来实现这一点。但是,有没有比遍历两个for循环更有效的方法呢?
all_subscribers = post.subscribers.all()
for tag in tags:
for subscriber in all_subscribers:
tag.subscriber.add(subscriber)
tag.save()请注意,为了简单起见,我在上面使用了一个玩具示例。
发布于 2017-03-01 12:17:01
我想你要找的是:
for tag in tags:
tag.subscriber.add(*all_subscribers)
tag.save()另一种更快的方法是创建中间表
class Subscription(models.Molde):
tag = models.ForeignKey(Tag)
subscriber = models.ForeignKey(Subscriber)然后批量创建订阅
subscriptions = []
for tag in tags:
for subscriber in all_subscribers:
subscriptions.append(Subscription(tag=tag, subscriber=subscriber))
Subscription.objects.bulk_create(subscriptions)https://stackoverflow.com/questions/42521055
复制相似问题