Det du ser är det korrekta beteendet.
get_or_create är en förkortning för 'få och returnera objektet som matchar kwargs , om det inte finns, skapa det med defaults '. Din sökning söker efter ett objekt där name är en skiftlägesokänslig matchning med 'cedar' . Det objektet finns, så det returneras. Inget mer, inget mindre.
Om det inte fanns någon matchning, har Stéphane rätt, och du skulle behöva ange name i defaults parameter. Alla uppslagningar som innehåller uppslagsavgränsaren __ tas bort från parametrarna som skickas till create() .