django bulk_create 查询中的外键关系?

Posted

技术标签:

【中文标题】django bulk_create 查询中的外键关系?【英文标题】:foreign key relations in django bulk_create query? 【发布时间】:2014-07-22 14:30:08 【问题描述】:

是否可以对具有外键关系的列使用 bulk_create 方法?

class Reports(models.Model):
    groupname=models.CharField(max_length=250, null=True, blank=True);
    datecreated = models.DateTimeField(null=True, blank=True);


class Reportsquery(models.Model):
    group = models.ForeignKey(Reports,null=True, blank=True);
    queryset=models.CharField(max_length=1000, null=True, blank=True);

list=[Reportsquery("group__id":6,"queryset":"abc"),....,...]

Reportsquery.objects.bulk_create(list)

类似的查询适用于 get_or_create() 方法,但在使用时返回错误 批量创建() 例如:

Reportsquery.objects.get_or_create(group__id=6,quseryset="abc")

上面的例子将 group__id=6 插入到 Reportsquery 表中

【问题讨论】:

bulk_create() 返回什么错误? group__id 无法解析为字段.. 尝试使用一个下划线,即:group_id @MattDeacalionStevens 是的,它有效!!!谢谢:) Using Django bulk_create objects in foreign keys?的可能重复 【参考方案1】:

如果您要在Reportsquery 旁边创建Reports 的实例,那么没有bulk_create() 不会这样做。但是,如果Reports 的实例已经存在于数据库中,那么您可以手动将它们的pk 添加到您传递给bulk_create() 的列表中。然后将创建与Reports 具有正确关系的Reportquery 实例。

【讨论】:

不,我只是想映射存在的 Reports 实例。无论如何,'_' 工作 Thanx.. 如果 OP 试图在 Reportsquery 旁边创建 Reports 的实例,是另一种方法吗,因为 bulk_create() 不会?

以上是关于django bulk_create 查询中的外键关系?的主要内容,如果未能解决你的问题,请参考以下文章

Django:使用原始查询来限制 ModelForm 中的外键选择字段

将查询集传递给 django 内联表单中的外键字段

如何使用Django中的外键关系中的任何/ exists / all逻辑检索查询集?

使用 django 查询集访问不同的外键关系

Django过滤与其他模型的外键相关的模型的查询集?

如何使用 Graphene-Django Relay 中的外键关系更新模型?