Python Django-如何有效地将列表添加到多对多模型字段
我有三种型号。帖子、标签和订阅者。帖子和订阅者之间存在多对多关系,标签和订阅者之间存在另一种多对多关系。贴子和标签之间存在ForeignKey关系。我想把一篇文章的所有订阅者添加到它的相关标签中。我可以通过以下方法实现这一点。但是有没有比迭代两个for循环更有效的方法呢Python Django-如何有效地将列表添加到多对多模型字段,python,django,Python,Django,我有三种型号。帖子、标签和订阅者。帖子和订阅者之间存在多对多关系,标签和订阅者之间存在另一种多对多关系。贴子和标签之间存在ForeignKey关系。我想把一篇文章的所有订阅者添加到它的相关标签中。我可以通过以下方法实现这一点。但是有没有比迭代两个for循环更有效的方法呢 all_subscribers = post.subscribers.all() for tag in tags: for subscriber in all_subscribers: tag.subsc
all_subscribers = post.subscribers.all()
for tag in tags:
for subscriber in all_subscribers:
tag.subscriber.add(subscriber)
tag.save()
请注意,为了简单起见,我在上面使用了一个玩具示例。我认为您需要的是:
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)