Al escribir consultas django, uno puede usar tanto id / pk como parámetros de consulta.
Object.objects.get(id=1)
Object.objects.get(pk=1)
Sé que pk significa Clave primaria y es solo un acceso directo, según la documentación de django. Sin embargo, no está claro cuándo se debe usar id o pk.
django
orm
primary-key
Arte
fuente
fuente

idy parapkRespuestas:
No importa.
pkes más independiente del campo de clave principal real, es decir que no es necesario preocuparse de si el campo de clave principal se llamaidoobject_idlo que sea.También proporciona más coherencia si tiene modelos con diferentes campos de clave principal.
fuente
idtambién es una función incorporada en Python, prefiero usar pk por eso.pkes preferible. Consulte la documentación de la función incorporadaiden la biblioteca estándar de Python. (Es lo mismo en Python 2. )En los proyectos de Django donde sé que
pksiempre regresaid, prefiero usarlosidcuando no entran en conflicto con laid()función (en todas partes, excepto los nombres de variables). La razón de esto es quepkes una propiedad que es 7 veces más lenta queiddesde que lleva tiempo buscar elpknombre del atributometa.Aquí está el código Django relevante:
Es realmente un caso raro cuando necesito usar una variable llamada
pk. Prefiero usar algo más detallado, como enuser_idlugar depk.Seguir la misma convención es preferible en todo el proyecto. En su caso,
ides un nombre de parámetro, no una propiedad, por lo que casi no hay diferencia en los tiempos. Los nombres de los parámetros no coinciden con el nombre de laid()función incorporada, por lo que es seguro usaridaquí.En resumen, depende de usted elegir si desea usar el nombre del campo
ido elpkacceso directo. Si no está desarrollando una biblioteca para Django y utiliza campos de clave primaria automáticos para todos los modelos, es seguro usarlos enidtodas partes, lo que a veces es más rápido. Por otro lado, si desea acceso universal a los campos de clave primaria (probablemente personalizados), utilícelos enpktodas partes. Un tercio de microsegundo no es nada para la web.fuente