Това, което виждате, е правилното поведение.
get_or_create е съкращение за „вземете и върнете обекта, съответстващ на kwargs , ако не съществува, създайте го с помощта на defaults '. Вашето търсене търси обект, където name е нечувствително съвпадение на 'cedar' . Този обект съществува, така че се връща. Нищо повече, нищо по-малко.
Сега, ако няма съвпадение, Стефан е прав и ще трябва да посочите name в defaults параметър. Всички търсения, съдържащи разделителя за търсене __ се премахват от параметрите, предадени на create() .