web-dev-qa-db-fra.com

Comment obtenir l'ID de l'enregistrement qui vient d'être sauvegardé

J'utilise Django 1.3 pour l'un de mes projets et j'ai besoin d'obtenir l'ID d'un enregistrement qui vient d'être enregistré dans la base de données.

J'ai quelque chose comme le code ci-dessous pour enregistrer un enregistrement dans la base de données:

n = MyData.objects.create(record_title=title, record_content=content)
n.save()

L'ID de l'enregistrement vient d'enregistrer les incréments automatiques. Existe-t-il un moyen d'obtenir cet ID et de l'utiliser ailleurs dans mon code?

62
avatar

Utilisation n.id après la sauvegarde.

Voir " Clés primaires à incrémentation automatique ".

96
JamesO

Ce serait n.pk.

Pour citer " Model.pk ":

Que vous définissiez vous-même un champ de clé primaire ou que vous laissiez Django en fournir un pour vous, chaque modèle aura une propriété appelée pk. Il se comporte comme un attribut normal sur le modèle, mais est en fait un alias pour n'importe quel attribut est le champ de clé primaire du modèle. Vous pouvez lire et définir cette valeur, comme vous le feriez pour tout autre attribut, et il mettra à jour le champ correct dans le modèle.

47
Davor Lucic

L'ID sera automatiquement mis à jour dans votre modèle, donc immédiatement après votre ligne n.save() vous pouvez lire n.id et il sera rempli.

7
Andrew Wilkinson

Supprimez save () et obtenez pk directement:

n = MyData.objects.create(record_title=title, record_content=content)
n.pk
0
Yevhen Dyachenko