Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-如何有效地将列表添加到多对多模型字段_Python_Django - Fatal编程技术网

Python Django-如何有效地将列表添加到多对多模型字段

Python Django-如何有效地将列表添加到多对多模型字段,python,django,Python,Django,我有三种型号。帖子、标签和订阅者。帖子和订阅者之间存在多对多关系,标签和订阅者之间存在另一种多对多关系。贴子和标签之间存在ForeignKey关系。我想把一篇文章的所有订阅者添加到它的相关标签中。我可以通过以下方法实现这一点。但是有没有比迭代两个for循环更有效的方法呢 all_subscribers = post.subscribers.all() for tag in tags: for subscriber in all_subscribers: tag.subsc

我有三种型号。帖子、标签和订阅者。帖子和订阅者之间存在多对多关系,标签和订阅者之间存在另一种多对多关系。贴子和标签之间存在ForeignKey关系。我想把一篇文章的所有订阅者添加到它的相关标签中。我可以通过以下方法实现这一点。但是有没有比迭代两个for循环更有效的方法呢

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)