如何以最少的数据库点击次数将多个实例添加到 Django 反向外键集?
Posted
技术标签:
【中文标题】如何以最少的数据库点击次数将多个实例添加到 Django 反向外键集?【英文标题】:How can I add multiple instances to a Django reverse foreign key set in a minimal number of hits to the database? 【发布时间】:2013-09-27 01:30:18 【问题描述】:例如,我有两个模型:
class Person(models.Model):
name = models.CharField(max_length=100)
class Job(models.Model):
title = models.CharField(max_length=100)
person = models.ForeignKey(Person)
我有一个工作 ID 列表--
job_ids = [1, 2, ....]
是作业模型实例的pks
我知道我能做到--
for id in job_ids:
person.jobs.add(job_id)
但这会比我能做的要多得多--
person.jobs.add(job_ids)
它将解压列表并使用 bulk_create。我该怎么做呢?谢谢。
【问题讨论】:
【参考方案1】:你试过了吗
person.jobs.add(*job_ids)
在我的例子中,我使用了一个过滤查询并且有一个对象列表(而不是 ID)。我收到类似于
的错误TypeError: 'MyModel' instance expected, got [<MyModel: MyModel Object>]
...在我加入星号之前。
credit (another SO question)
【讨论】:
以上是关于如何以最少的数据库点击次数将多个实例添加到 Django 反向外键集?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用javascript找到从A点到B点完成这项工作的最少旅行次数?