为什么Django bulk_在没有pk的情况下创建返回对象?
为什么Django为什么Django bulk_在没有pk的情况下创建返回对象?,django,django-orm,Django,Django Orm,为什么Djangobulk\u创建返回没有pk的对象 In [1]: item_list = [Model(title=str(i)) for i in range(10)] In [2]: objs = Model.objects.bulk_create(item_list) In [3]: print(objs[0].pk) None 在结果objs==项目列表中 这有什么意义 我的意思是,此方法可以返回操作的结果(即True,或False,或其他),而不是我已经拥有的无用对象集合。引用d
bulk\u创建返回没有pk
的对象
In [1]: item_list = [Model(title=str(i)) for i in range(10)]
In [2]: objs = Model.objects.bulk_create(item_list)
In [3]: print(objs[0].pk)
None
在结果objs==项目列表中
这有什么意义
我的意思是,此方法可以返回操作的结果(即True
,或False
,或其他),而不是我已经拥有的无用对象集合。引用django:
如果模型的主键是自动字段,则不会检索和
像save()那样设置主键属性
根据django的说法,它一次创建一个数据库记录列表,但不会检索对象的ID。我认为这对于在不进一步处理数据的情况下进行大量插入的情况是有益的。从Django 1.10开始:
如果模型的主键是一个自动字段
,它不会像save()
那样检索和设置主键属性,除非数据库后端支持它(当前为PostgreSQL)
因此,如果您使用的是Django 1.10+,并且没有返回主键,这是因为只有PostgreSQL支持它。运行Django 2.2,而这个问题仍然存在,Django 3.2。。。