Django - 获取最后插入的ID

7 投票
4 回答
10481 浏览
提问于 2025-04-15 13:03

我无法像往常一样获取最后插入的ID,不太明白为什么。

在我的视图中:

comment = Comments( ...)
comment.save()
comment.id #returns None

在我的模型中:

class Comments(models.Model):
    id = models.IntegerField(primary_key=True)

有没有人遇到过这个问题?通常在我调用save()方法后,我可以通过comment.id来获取ID,但这次却不行。

4 个回答

2

要定义一个自动设置的主键,可以使用AutoField:

class Comments(models.Model):
    id = models.AutoField(primary_key=True)
5

简单来说,你只需要这样做:

c = Comment.object.latest()

这样就能给你返回最后插入的评论了。

c.pk

12 #last comment saved.
9

你在这行代码 comment = Comments( ...) 中设置 id 字段的值了吗?如果没有,那你为什么要自己定义这个字段,而不让Django自动处理主键呢?Django会用一个叫AutoField的东西来自动生成主键。

如果你像例子中那样把主键指定为一个整数类型(IntegerField),Django就不会自动给它赋值了。

撰写回答