2010-01-29 11 views
145

Al escribir las consultas de django se puede usar tanto id/pk como parámetros de consulta.Consultas de Django - id vs pk

Object.objects.get(id=1) 
Object.objects.get(pk=1) 

Sé que pk significa Primary Key y es solo un atajo, según la documentación de django. Sin embargo, no está claro cuándo se debe usar id o pk.

+0

Aquí está la documentación respectiva: [para '' id''] (https://docs.djangoproject.com/en/1.9/topics/db/models/#automatic-primary-key-fields) y [para '' pk''] (https://docs.djangoproject.com/en/1.9/topics/db/queries/#the-pk-lookup-shortcut) –

+0

Posible duplicado de [¿Cuál es la diferencia entre Model.id y Model .pk en django?] (http://stackoverflow.com/questions/22345711/whats-the-difference-between-model-id-and-model-pk-in-django) – Travis

+0

¿Quieres saber si algo es más para es https://docs.djangoproject.com/en/1.11/topics/db/queries/#copying-model-instances –

Respuesta

158

No importa. pk es más independiente del campo de clave principal real, es decir, no tiene que importar si el campo de la clave principal se llama id o object_id o lo que sea.

También le da más consistencia si tiene modelos con diferentes campos de teclas principales.

+17

Sí. Solo usa pk. Siempre. – cethegeek

+35

'id' también es una función incorporada en Python, prefiero usar pk por eso. –

+3

Sí, '' pk'' es preferible. Consulte la [documentación de la función incorporada''id''] (https://docs.python.org/3.5/library/functions.html#id) en la biblioteca estándar de Python. (Es el [mismo en Python 2] (https://docs.python.org/2.7/library/functions.html#id).) –

Cuestiones relacionadas