在Django中获取最后插入的ID

12

我正在从其他数据库迁移一些数据,因此我正在使用原始的 SQL 查询将数据插入数据库中。但我不知道如何从 Django 的原始 SQL 查询中获取最后插入的 id。我尝试了这个:

affected_count1=cursor2.execute("table')")

and

SELECT IDENT_CURRENT(‘MyTable’)

但是它给我一个错误:"(1305, 'FUNCTION pydev.SCOPE_IDENTITY does not exist')"

请告诉我如何在Django的原始SQL查询中获取最后插入的ID。


1
https://dev59.com/4XE85IYBdhLWcg3w6oB0 - ndpu
你使用的是哪个数据库引擎? - luc
3个回答

30
您可以通过以下方式获取最新的创建对象:
obj = Foo.objects.latest('id')

更多信息在此处


不,这与问题无关。 - wRAR
我知道这与问题无关:但是每当我尝试在模型中的ForeignKey中添加default=Foo.objects.latest('id')时,启动时会出现错误“应用程序注册表尚未准备好”(Django 1.7a2)。你知道是为什么吗? - Martin Grohmann
1
最新的版本是否使用并发? - Anurag

4

试试这个

LastInsertId = (TableName.objects.last()).id

在最高票答案中提出的使用 last().id 相比于使用 .latest('id') 有什么好处? - Jeremy Caney
.latest('id') 抛出错误:> TypeError: TableName类型的对象不可JSON序列化 - Merrin K

3
在Django 1.6中,
obj = Foo.objects.latest('id')

obj = Foo.objects.earliest('id')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接