对象实例使用django-bulk_create()返回none



我正试图将数据批量插入数据库,但在附加这些实例后,我发现它们不是

型号

class Seekerskillset(models.Model):
skill_set = models.ForeignKey(Skillset, on_delete=models.CASCADE)
seeker = models.ForeignKey(SeekerProfile, on_delete=models.CASCADE)
skill_level = models.CharField(max_length=25)

class Meta:
verbose_name = 'Seeker skill set'

我的观点

for skill_nme, skill_lvl in zip(skill_name, skill_level):
skill_set = Skillset.objects.get(skill_name=skill_nme)
seeker_skll.append(Seekerskillset(
skill_set=skill_set, skill_level=skill_lvl, seeker=user))
print(seeker_skll)

seeker_bulk = Seekerskillset.objects.bulk_create(seeker_skll)
print('after insertion',seeker_bulk)
return redirect('/users/dashboard')

跟踪

<class 'seekerbuilder.models.SeekerProfile'>
[<Seekerskillset: Seekerskillset object (None)>, <Seekerskillset: Seekerskillset object (None)>, <Seekerskillset: Seekerskillset object (None)>, <Seekerskillset: Seekerskillset object (None)>]
after insertion [<Seekerskillset: Seekerskillset object (None)>, <Seekerskillset: Seekerskillset object (None)>, <Seekerskillset: Seekerskillset object (None)>, <Seekerskillset: Seekerskillset object (None)>]
[19/Jul/2021 14:27:12] "POST /users/app_det/ HTTP/1.1" 302 0
[19/Jul/2021 14:27:12] "GET /users/dashboard HTTP/1.1" 301 0

方括号之间的项(此处为(None)(是对象的主键。因此,如果您不覆盖模型的__str____repr__方法,它将使用打印

<ModelName:ModelName对象(pk(>

当为某些数据库执行.bulk_create(…)[Django-doc]时,Django能够为其他数据库检索主键,这是不可能的(例如,因为数据库在创建对象时不包含任何返回值的逻辑(。按照文件规定:

如果模型的主键是AutoField,则主键属性只能在某些数据库上检索(目前为PostgreSQL、MariaDB 10.5+和SQLite 3.35+(。在其他数据库上,不会设置主键属性。

最新更新