2009-07-21 32 views
5

私は通常のように最後の挿入IDを取得できません。理由はわかりません。私の見解ではDjango - 最後の挿入ID

:私のモデルでは

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

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

は、誰もが前に、この問題に遭遇していますか?通常save()メソッドを呼び出した後、私はcomment.id経由でidにアクセスできますが、今回は動作しません。

+0

を返す必要があります

c = Comment.object.latest() 

を行います?あなたはAutoFieldを使用していません。 – balpha

答えて

7

行のidフィールドの値を設定していますか?もしそうでなければ、DjangoにAutoFieldでプライマリキーを世話させるのではなく、なぜフィールドを定義していますか?

例ではIntegerFieldをプライマリキーとして指定すると、Djangoは値を自動的に割り当てません。自動的に設定され、主キーの使用のAutoFieldを定義するには

+0

いいえ、私はそれが自動インクリメントされているIDを定義していません。私はそれを気付かなかった、ありがとう。 – Joe

1

idという名前の新しいIntegerFieldをプライマリキーとして特別に設定しますか? Djangoはすでにあなたのために無料で行っているので...

あなたのコメントモデルからidフィールドを削除しようとしましたか?

2

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

は、単にあなたが今までにIDを設定してください、あなたに最後に挿入のコメント

c.pk 

12 #last comment saved. 
+0

これは 'object'ではなく' object'でなければなりません。 – Seether

関連する問題