2009-07-21 13 views
5

Son eklediğim gibi id ekleyemiyorum genellikle neden yaptığımı ve neden emin değilim. BenceDjango - sonekleme kimliği

:

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

benim var Ürün Kodu:

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

Herkes önce bu soruna çalıştırmak vardır? Genellikle save() yöntemini çağırdıktan sonra, comment.id aracılığıyla id öğesine erişebilirim, ancak bu sefer çalışmıyor.

+0

dönmelidir Hiç kimliği belirlenen Do ? AutoField kullanmıyorsunuz. – balpha

cevap

7

comment = Comments(...) satırında id alanının değerini mi ayarlıyorsunuz? Aksi halde, Django'nun bir AutoField ile birincil anahtara bakmasına izin vermek yerine, neden alanı tanımlarsınız?

Örnekte yaptığınız gibi IntegerField'ı birincil anahtar olarak belirtirseniz, Django otomatik olarak bir değer atar.

+0

no, kimliği tanımlamıyorum otomatik artırılmış. Farketmedim, teşekkürler. – Joe

1

Özel olarak birincil anahtar olarak adlandırılmış yeni bir IntegerField kimliğini ayarlamak ister misiniz? Çünkü Django zaten sizin için bunu ücretsiz yapıyor ...

Bu söyleniyor mu? Yorum alanınızdan id alanını kaldırmayı denediniz mi?

2

bir otomatik olarak ayarlanır birincil anahtar kullanımı AutoField tanımlamak için:

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

Basitçe

c = Comment.object.latest() 

yapmak size son eklenen yorumunu

c.pk 

12 #last comment saved. 
+0

Nesne değil, nesne olmalıdır. – Seether