Lo que estás viendo es el comportamiento correcto.
get_or_create
es la abreviatura de 'obtener y devolver el objeto que coincide con kwargs
, si no existe, créelo usando defaults
'. Su búsqueda está buscando un objeto donde name
es una coincidencia que no distingue entre mayúsculas y minúsculas con 'cedar'
. Ese objeto existe, por lo que se devuelve. Nada más, nada menos.
Ahora bien, si no hubiera ninguna coincidencia, Stéphane tiene razón y tendrías que especificar name
en los defaults
parámetro. Todas las búsquedas que contienen el separador de búsqueda __
se eliminan de los parámetros pasados a create()
.