Django crea automáticamente un campo de identificación como clave principal.
Ahora necesito obtener el objeto por esta identificación.
object = Class.objects.filter()
¿Cómo escribir este filtro?
django
django-models
django-orm
usuario469652
fuente
fuente
pk
es la forma preferida de referirse a la clave principal para cualquier modelo. Elid
campo solo se genera si el autor del modelo no designa específicamente una clave principal. Si el autor hizo especificar un campo de clave principal que no se nombraid
, entonces no habrá unid
campo.id
en una función incorporada que devuelve la identidad de un objeto. En la mayoría de los casos, hacer referencia a cosas conid
hará lo correcto, por ejemplo,Class.objects.get(id=this_object_id)
funcionará. Pero eso es algo a considerar, supongo.Llegué aquí por el mismo problema, pero por una razón diferente:
Este código estaba generando una excepción ImportError. Lo que me confundió fue que el código a continuación se ejecutó bien y devolvió un conjunto de resultados como se esperaba:
Cola del rastreo del
get()
método:Al leer el código dentro de Django
loading.py
, llegué a la conclusión de quesettings.py
tenía una ruta incorrecta a mi aplicación que contiene laClass
definición de mi modelo. Todo lo que tuve que hacer fue corregir la ruta a la aplicación y elget()
método se ejecutó bien.Aquí está mi
settings.py
con la ruta corregida:)
Toda la confusión se debió a que estoy usando el ORM de Django como independiente, por lo que el espacio de nombres tenía que reflejar eso.
fuente
También puedes hacer:
Esto funciona, pero es posible que no esté seguro de si es compatible con Django 2.
fuente
Puedes usar:
Esto devolverá un conjunto de consultas incluso si obtiene un objeto. Si necesita exactamente un objeto, utilice:
fuente
También puede usar el acceso directo get_object_or_404 de django. Genera un error 404 si no se encuentra el objeto.
fuente