MySQL + Django:save()之后没有obj.id

时间:2012-08-02 23:45:28

标签: mysql django django-models auto-increment

使用Django和MySQL。我保存模型,没有ID出现。看过PostgreSQL和bigintegerfields的一些类似问题,但这些似乎都不适用于此。有任何想法吗?客户端确实通过MySQL自动增量在数据库的id字段中接收主键。

谢谢!

class Client(models.Model):
    id = models.IntegerField(primary_key=True)
    first_name = models.TextField(null=True, blank=True)
    last_name = models.TextField(blank=True)


>>> client = models.Client(last_name="Last", first_name="First")
>>> client.last_name
'Last'
>>> client.save()
>>> client.id
>>> client.last_name
'Last'
>>> client.id
>>> client.pk
>>>

在数据库中:

id      first_name  last_name
------------------------------------------
14      First       Last

2 个答案:

答案 0 :(得分:6)

正如Rebus在评论中所说,您不需要明确定义主键。但如果你这样做,你必须确保它是一个自动增量字段 - 即AutoField - 而不是你所拥有的基本IntegerField。你拥有它的方式,没有办法获得一个新的ID,这就是为什么它在保存时是空白的。

答案 1 :(得分:0)

系统生成的数据库密钥必须由数据库设置,否则您将没有多用户数据库。