2009-07-21 16 views
5

No puedo obtener la última ID de inserción como suelo hacerlo y no estoy seguro de por qué.Django - ID de la última inserción

En mi punto de vista:

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

En mi modelo:

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

Alguien ha funcionado en este problema antes? Por lo general, después de llamar al método save(), tengo acceso a la identificación a través de comment.id, pero esta vez no funciona.

+0

¿Alguna vez se establece el id ? No estás usando un AutoField. – balpha

Respuesta

7

¿Está estableciendo el valor del campo id en la línea comment = Comments(...) ? Si no, ¿por qué estás definiendo el campo en lugar de simplemente dejar que Django se ocupe de la clave principal con un AutoField?

Si especifica en IntegerField como clave principal como lo está haciendo en el ejemplo, Django no le asignará automáticamente un valor.

+0

no, no defino id, se incrementa automáticamente. No me di cuenta de eso, gracias. – Joe

1

¿Desea establecer específicamente un nuevo Identidad llamada IntegerField como clave principal? Porque Django ya lo hace por ti gratis ...

Dicho esto, ¿has intentado eliminar el campo de identificación de tu modelo de comentarios?

2

Para definir un conjunto de forma automática clave principal uso AutoField:

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

Basta con hacer

c = Comment.object.latest() 

que se debe devolver el último comentario insertado

c.pk 

12 #last comment saved. 
+0

Eso debería ser 'objects', not' object'. – Seether

Cuestiones relacionadas