Apa yang Anda lihat adalah perilaku yang benar.
get_or_create adalah singkatan dari 'dapatkan dan kembalikan objek yang cocok dengan kwargs , jika tidak ada, buat menggunakan defaults '. Pencarian Anda mencari objek di mana name adalah kecocokan case-insensitive untuk 'cedar' . Objek itu ada, jadi dikembalikan. Tidak lebih, tidak kurang.
Sekarang jika tidak ada yang cocok, Stéphane benar, dan Anda perlu menentukan name di defaults parameter. Semua pencarian yang berisi pemisah pencarian __ dilucuti dari parameter yang diteruskan ke create() .