Django cria automaticamente um campo de id como chave primária.
Agora eu preciso obter o objeto por este id.
object = Class.objects.filter()
Como escrever este filtro?
django
django-models
django-orm
user469652
fonte
fonte
pk
é a maneira preferida de se referir à chave primária para qualquer modelo. Oid
campo só é gerado se o autor do modelo não designar especificamente uma chave primária. Se o autor fez especificar um campo de chave primária que não é nomeadoid
, então não haverá umid
campo.id
em uma função interna que retorna a identidade de um objeto. Na maioria dos casos, fazer referência a coisas porid
fará a coisa certa, por exemplo,Class.objects.get(id=this_object_id)
trabalhar. Mas isso é algo a se considerar, eu acho.Vim aqui pelo mesmo problema, mas por um motivo diferente:
Este código estava gerando uma exceção ImportError. O que estava me confundindo é que o código abaixo foi executado corretamente e retornou um conjunto de resultados conforme o esperado:
Cauda do traceback para o
get()
método:Lendo o código dentro do Django
loading.py
, cheguei à conclusão de quesettings.py
havia um caminho incorreto para o meu aplicativo que contém aClass
definição do meu modelo. Tudo que tive que fazer foi corrigir o caminho para o aplicativo e oget()
método foi executado corretamente .Aqui está o meu
settings.py
caminho corrigido:)
Toda a confusão foi causada porque estou usando o ORM do Django como um autônomo, então o namespace teve que refletir isso.
fonte
Você também pode fazer:
Isso funciona, mas pode não ter certeza se é compatível com Django 2.
fonte
Você pode usar:
Isso retornará um conjunto de consultas mesmo que obtenha um objeto. Se você precisa de exatamente um objeto, use:
fonte
Você também pode usar o atalho get_object_or_404 django. Ele gera um erro 404 se o objeto não for encontrado.
fonte