Ao escrever consultas no django, pode-se usar id / pk como parâmetros de consulta.
Object.objects.get(id=1)
Object.objects.get(pk=1)
Eu sei que pk significa Primary Key e é apenas um atalho, de acordo com a documentação do django. No entanto, não está claro quando alguém deve usar id ou pk.
django
orm
primary-key
Arte
fonte
fonte
id
e parapk
Respostas:
Não importa.
pk
é mais independente do campo de chave primária real ou seja, você não precisa se preocupar se o campo de chave primária é chamadoid
ouobject_id
ou qualquer outra coisa.Ele também fornece mais consistência se você tiver modelos com diferentes campos de chave primária.
fonte
id
também é uma função interna do Python, prefiro usar pk por causa disso.pk
é preferível. Veja a documentação da funçãoid
interna na biblioteca padrão do Python. (É o mesmo em Python 2 ).Nos projetos do Django, onde eu sei que
pk
sempre retornaid
, prefiro usarid
quando ele não entra em conflito com aid()
função (em todos os lugares, exceto nomes de variáveis). A razão para isso é quepk
é uma propriedade 7 vezes mais lenta queid
a demora em procurar opk
nome do atributometa
.Aqui está o código Django relevante:
É realmente um caso raro quando eu preciso usar uma variável chamada
pk
. Eu prefiro usar algo mais detalhado, como emuser_id
vez depk
.Seguir a mesma convenção é preferível em todo o projeto. No seu caso,
id
existe um nome de parâmetro, não uma propriedade; portanto, quase não há diferença nos tempos. Os nomes de parâmetros não se chocam com o nome daid()
função interna, portanto, é seguro usá-loid
aqui.Para resumir, cabe a você escolher se deseja usar o nome do campo
id
ou opk
atalho. Se você não está desenvolvendo uma biblioteca para o Django e usa campos automáticos de chave primária para todos os modelos, é seguro usá-lo emid
qualquer lugar, o que às vezes é mais rápido. Por outro lado, se você deseja acesso universal a campos de chave primária (provavelmente personalizados), use empk
qualquer lugar. Um terço de microssegundo não é nada para a web.fonte