Django - последний идентификатор вставки - PullRequest
5 голосов
/ 21 июля 2009

Я не могу получить последний идентификатор вставки, как обычно, и я не знаю, почему.

На мой взгляд:

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

В моей модели:

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

Кто-нибудь сталкивался с этой проблемой раньше? Обычно после вызова метода save () у меня есть доступ к идентификатору через comment.id, но на этот раз он не работает.

Ответы [ 4 ]

7 голосов
/ 21 июля 2009

Вы устанавливаете значение поля id в строке comment = Comments( ...) ? Если нет, то почему вы определяете поле, а не просто позволяете Django позаботиться о первичном ключе с помощью автоматического поля?

Если вы укажете IntegerField в качестве первичного ключа, как вы делаете в примере, Django не будет автоматически присваивать ему значение.

2 голосов
/ 27 сентября 2013

Просто сделай

c = Comment.object.latest()

Это должно вернуть вам последний вставленный комментарий

c.pk

12 #last comment saved.
2 голосов
/ 21 июля 2009

Для определения автоматически установленного первичного ключа используйте AutoField:

class Comments(models.Model):
    id = models.AutoField(primary_key=True)
1 голос
/ 21 июля 2009

Вы хотите специально установить новый IntegerField с именем id в качестве первичного ключа? Потому что Джанго уже делает это для тебя бесплатно ...

При этом вы пытались удалить поле id из модели комментария?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...