O que você está vendo é o comportamento correto.
get_or_create é uma abreviação para 'obter e retornar o objeto correspondente a kwargs , se não existir, crie-o usando defaults '. Sua pesquisa está procurando por um objeto onde name é uma correspondência que não diferencia maiúsculas de minúsculas para 'cedar' . Esse objeto existe, então ele é retornado. Nada mais nada menos. Agora, se não houver correspondência, Stéphane está certo, e você precisaria especificar
name nos defaults parâmetro. Todas as pesquisas contendo o separador de pesquisa __ são retirados dos parâmetros passados para create() .