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 中的外键选择字段