首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django -如何有效地将列表添加到多对多模型字段

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

Stack Overflow用户
提问于 2017-03-01 08:16:09
回答 1查看 132关注 0票数 1

我有三个型号。文章、标签和订阅者。在帖子和订阅者之间存在多对多关系,在标签和订阅者之间存在另一种多对多关系。帖子和标签之间存在ForeignKey关系。我想将给定帖子的所有订阅者添加到它的关联标记中。我可以通过执行以下操作来实现这一点。但是,有没有比遍历两个for循环更有效的方法呢?

代码语言:javascript
复制
all_subscribers = post.subscribers.all()
for tag in tags:
    for subscriber in all_subscribers:
        tag.subscriber.add(subscriber)
tag.save()

请注意,为了简单起见,我在上面使用了一个玩具示例。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-01 12:17:01

我想你要找的是:

代码语言:javascript
复制
for tag in tags:
    tag.subscriber.add(*all_subscribers)
    tag.save()

另一种更快的方法是创建中间表

代码语言:javascript
复制
class Subscription(models.Molde):
    tag = models.ForeignKey(Tag)
    subscriber = models.ForeignKey(Subscriber)

然后批量创建订阅

代码语言:javascript
复制
subscriptions = []
for tag in tags:
    for subscriber in all_subscribers:
        subscriptions.append(Subscription(tag=tag, subscriber=subscriber))
Subscription.objects.bulk_create(subscriptions)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42521055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档