2009-07-21 17 views
5

Nie mogę pobrać ostatniego identyfikatora wkładki tak jak zwykle i nie jestem pewien dlaczego.Django - ostatnia wstawka id

Moim zdaniem:

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

w moim modelu:

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

ktoś napotkasz ten problem wcześniej? Zwykle po wywołaniu metody save(), mam dostęp do id poprzez comment.id, ale tym razem to nie działa.

+0

Czy kiedykolwiek ustawić identyfikator ? Nie korzystasz z AutoFielda. – balpha

Odpowiedz

7

Czy ustawiasz wartość pola id w linii comment = Comments(...) ? Jeśli nie, dlaczego definiujesz pole zamiast po prostu pozwolić Django zająć się kluczem podstawowym za pomocą AutoField?

Jeśli określisz w kluczu IntegerField klucz podstawowy, tak jak w przykładzie Django nie będzie automatycznie przypisywać mu wartości.

+0

Nie, nie definiuję id, to jest auto inkrementowane. Nie zdawałem sobie z tego sprawy, dzięki. – Joe

1

Czy chcesz ustawić nową nazwę IntegerField nazywaną identyfikatorem jako klucz podstawowy? Ponieważ Django już to robi za darmo ...

Czy to prawda, że ​​próbowałeś usunąć pole id z twojego modelu komentarza?

2

Aby zdefiniować automatycznie ustawić klucz podstawowy use AutoField:

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

Wystarczy zrobić

c = Comment.object.latest() 

To powinno zamian ostatnio wstawionego komentarza

c.pk 

12 #last comment saved. 
+0

To powinno być 'objects', a nie' Object'. – Seether

Powiązane problemy