代码之家  ›  专栏  ›  技术社区  ›  Joe

Django-上次插入ID

  •  5
  • Joe  · 技术社区  · 15 年前

    我不能像平时那样得到最后一个插入ID,我不知道为什么。

    在我看来:

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

    在我的模型中:

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

    以前有人遇到过这个问题吗?通常在调用save()方法后,我可以通过comment.id访问该ID,但这次它不起作用。

    4 回复  |  直到 11 年前
        1
  •  7
  •   Steve Losh    15 年前

    你在设置 id 中的字段 comment = Comments( ...) 线路?如果没有,为什么要定义字段而不是让Django用自动字段处理主键?

    如果在integerfield中指定为主键,就像在示例中所做的那样,Django不会自动为其赋值。

        2
  •  2
  •   Alexander Ljungberg    15 年前

    要定义自动设置的主键,请使用自动字段:

    class Comments(models.Model):
        id = models.AutoField(primary_key=True)
    
        3
  •  2
  •   oluwaseun    11 年前

    简单地做

    c = Comment.object.latest()
    

    它将返回最后插入的注释

    c.pk
    
    12 #last comment saved.
    
        4
  •  1
  •   AlbertoPL    15 年前

    是否要将名为id的新integerfield专门设置为主键?因为Django已经免费为你做了…

    也就是说,您是否尝试从注释模型中删除ID字段?