¿Por qué el conjunto de consultas de django no funciona para mí?

Debería poder usar el conjunto de consultas '_contains' en mis variables de objeto Django para filtrar mis resultados, de acuerdo con esta documentación

Pero cuando implemento este código:

cookbooks = Books.objects.filter (category_contains = 'cooking')

Obtuve el siguiente error:

Cannot resolve keyword 'category_contains' into field. Choices are: category, adder, date etc.

¿Por qué está pasando esto? yo también vi esta pregunta de StackOverflow donde alguien explica que solo usando variable category implica category_exact. pero si escribo category_exact Recibo un error similar.

preguntado el 17 de mayo de 12 a las 20:05

2 Respuestas

Necesitas usar un guión bajo doble __ ni un solo guión bajo _.

contestado el 17 de mayo de 12 a las 20:05

Tienes razón. Mientras jugaba, cambié algunas otras cosas. ¡Eso funcionó! ¡Gracias! - user1328021

Las búsquedas de campo tienen el prefijo de dos guiones bajos (__) ni uno (_). Puede ser difícil notar la diferencia al principio cuando no está familiarizado con la sintaxis.

Verifique dos veces la documentación para búsquedas de campo en general y más específicamente la contiene documentación. Aquí está el ejemplo de la documentación contiene con comentarios que muestran uno o dos guiones bajos:

Entry.objects.get(headline__contains='Lennon')
#                         __ <-- 2 _'s
#                     not _  <-- 1 _

contestado el 17 de mayo de 12 a las 20:05

La solución para mí fue tu =. Tenga en cuenta que Django da NameError on Entry.objects.get(headline__contains('Lennon')), diciendo que el headline__contains el nombre no está definido. Pero cambiar paréntesis a = y el NamError desaparece. - Morten Engelsmann

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.