2010-01-29 8 views
145

Lors de l'écriture de requêtes django, on peut utiliser id/pk comme paramètres de requête. Je sais que pk représente Primary Key et est juste un raccourci, selon la documentation de django. Cependant, il n'est pas clair quand on devrait utiliser id ou pk.Requêtes Django - id vs pk

+0

Voici la documentation respective: [pour '' id''] (https://docs.djangoproject.com/fr/1.9/topics/db/models/#automatic-primary-key-fields) et [pour '' pk''] (https://docs.djangoproject.com/fr/1.9/topics/db/queries/#the-pk-lookup-shortcut) –

+0

Copie possible de [Quelle est la différence entre Model.id et Model .pk dans django?] (http://stackoverflow.com/questions/22345711/whats-the-difference-between-model-id-and-model-pk-in-django) – Travis

+0

Vous voulez savoir si quelque chose est plus à https://docs.djangoproject.com/fr/1.11/topics/db/queries/#copying-model-instances –

Répondre

158

Peu importe. pk est plus indépendant du champ de clé primaire réel, c'est-à-dire que vous n'avez pas besoin de savoir si le champ de clé primaire est appelé id ou object_id ou autre.

Il vous donne également plus de cohérence si vous avez des modèles avec différents champs de clés primaires.

+17

Oui. Utilisez juste pk. Toujours. – cethegeek

+35

'id' est aussi une fonction intégrée en Python, je préfère utiliser pk à cause de cela. –

+3

Oui, "pk" est préférable. Voir la documentation de [built-in function'''''] (https://docs.python.org/3.5/library/functions.html#id) dans la bibliothèque standard de Python. (C'est le même dans [Python 2] (https://docs.python.org/2.7/library/functions.html#id).) –