2010-01-29 6 views
145

Beim Schreiben von Django-Abfragen kann ID/PK als Abfrageparameter verwendet werden.Django-Abfragen - ID vs. pk

Ich weiß, dass PK für Primärschlüssel steht und ist nur eine Abkürzung, nach Djangos Dokumentation. Es ist jedoch nicht klar, wann ID oder PK verwendet werden sollte.

+0

Hier ist die entsprechende Dokumentation: [für '' id''] (https://docs.djangoproject.com/en/1.9/topics/db/models/#automatic-primary-key-fields) und [für '' pk''] (https://docs.djangoproject.com/de/1.9/topics/db/queries/#the-pk-lookup-shortcut) –

+0

Mögliches Duplikat von [Was ist der Unterschied zwischen Model.id und Model? .pk in django?] (http://stackoverflow.com/questions/22345711/whats-the-difference-between-model-id-and-model-pk-in-django) – Travis

+0

Möchten Sie wissen, ob etwas mehr ist es https://docs.djangoproject.com/de/1.11/topics/db/queries/#copying-model-instances –

Antwort

158

Es spielt keine Rolle. pk ist unabhängiger vom eigentlichen Primärschlüsselfeld, d. H. Sie müssen sich nicht darum kümmern, ob das Primärschlüsselfeld id oder object_id oder was auch immer heißt.

Es gibt Ihnen auch mehr Konsistenz, wenn Sie Modelle mit unterschiedlichen Primärschlüsselfeldern haben.

+17

Ja. Benutze einfach pk. Immer. – cethegeek

+35

"ID" ist auch eine eingebaute Funktion in Python, ich bevorzuge deswegen pk. –

+3

Ja, '' pk'' ist vorzuziehen. Weitere Informationen finden Sie in der Dokumentation der integrierten Funktion "id" (https://docs.python.org/3.5/library/functions.html#id) in der Python-Standardbibliothek. (Es ist das [selbe in Python 2] (https://docs.python.org/2.7/library/functions.html#id).) –