06月10, 2016

Django获得bulk_create创建的对象的主键

Django从1.8开始支持数据库批量插入数据,文档详见:Django1.8的querysets之bulk-create,但是官方没有提供批量插入之后如何获取数据的主键,网上找到一个办法,经过试用,效果还是很不错的,记录下来推荐给大家 :

1、创建数据模型

注:数据模型中一定要有一个字段,用来记录时间的,数据库模型内容如下:

class Articles(models.Model):
    id = models.AutoField(primary_key=True, unique=True, verbose_name='自增ID')
    title = models.CharField(max_length=300, verbose_name='文章标题')
    content = models.TextField(default='', verbose_name='文章内容')
    publish_time = models.DateTimeField(db_index=True, verbose_name='文章发布时间')

接下来使用Django的命令生成数据模型Articles

2、使用bulk_create批量创建数据

import datetime
now = datetime.datetime.now()
articles = Articles.objects.bulk_create([
    Articles(title="title1", content="content1", publish_time=now),
    Articles(title="title2", content="content2", publish_time=now),
    Articles(title="title3", content="content3", publish_time=now),
])

使用上面的命令创建三条数据

3、获取批量插入数据的主键

new_articleids = Articles.objects.filter(publish_time >= now).values_list('id', flat=True)

这样就可以获取到刚才批量插入的数据的ID了,这种方法从网上得来,亲测效率很高,而且数据准确无误,有任何问题可以在文章下方留言。

本文链接:https://www.shaobin.wang/post/24.html

Comments