2010-01-29 61 views
145

在編寫django查詢時,可以同時使用id/pk作爲查詢參數。Django查詢 - id vs pk

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

根據django的文檔,我知道pk代表主鍵,只是一個快捷鍵。但是,不清楚何時應該使用id或pk。

+0

以下是相應的文檔:[for''id''](https://docs.djangoproject.com/en/1.9/topics/db/models/#automatic-primary-key-fields)和[for ''pk''](https://docs.djangoproject.com/en/1.9/topics/db/queries/#the-pk-lookup-shortcut) – 2016-03-23 09:18:45

+0

[Model.id和Model之間有什麼區別.pk在Django?](http://stackoverflow.com/questions/22345711/whats-the-difference-between-model-id-and-model-pk-in-django) – Travis 2016-10-05 16:26:14

+0

想知道是否有更多的東西它是https://docs.djangoproject.com/en/1.11/topics/db/queries/#copying-model-instances – 2017-07-11 16:52:45

回答

158

沒關係。 pk更加獨立於實際的主鍵字段,即您不必關心主鍵字段是否被稱爲idobject_id或其他什麼。

如果您的模型具有不同的主鍵字段,它還可以提供更高的一致性。

+17

是的。只需使用PK。總是。 – cethegeek 2010-01-30 20:23:13

+35

'id'也是Python中的一個內置函數,因此我更願意使用pk。 – 2010-10-23 14:05:29

+3

是的,「pk」是最好的。請參閱Python標準庫中的[內置函數'id''的文檔](https://docs.python.org/3.5/library/functions.html#id)。 (這與Python 2中的相同(https://docs.python.org/2.7/library/functions.html#id)。) – 2016-03-23 08:17:11