Django .create用于查询集中的每个项目?像:Reporter.objects.allarticle_set.create...

问题描述

https://docs.djangoproject.com/en/3.1/topics/db/examples/many_to_one/

以Django的Reporter / Article作为我的实际问题的可比示例,我需要为我的查询集中的每个记者创建一篇新文章

我现在的方法如下:

reporters = Reporter.objects.filter(...)
for reporter in reporters:
    article = Article()
    article.reporter = reporter
    ...
    article.save()

问题是我有25,000个“报告者”,因此处理请求花的时间太长,并且超时。

我想知道是否有更好的方法,例如:

Reporter.objects.filter(...).article_set.create(...)

解决方法

我认为您的情况下最好的解决方案是bulk_create()

类似这样的东西:

reporters = Reporter.objects.filter(...)

articles = []
for reporter in reporters:
    article = Article(reporter=reporter)
    ...
    articles.append(article)

Article.objects.bulk_create(articles)

这将使您不进行25k数据库查询。

,

您应该尝试执行以下操作:

reporters = Reporter.objects.filter(...)
for reporter in reporters:
    Article.objects.create(reporter=reporter,....)

这应该更有效,但不确定是否能解决您的问题。如果不需要,则可能需要批量处理。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...