Quello che vedi è il comportamento corretto.
get_or_create
è un'abbreviazione per 'ottenere e restituire l'oggetto corrispondente a kwargs
, se non esiste, crealo utilizzando defaults
'. La tua ricerca sta cercando un oggetto in cui name
è una corrispondenza senza distinzione tra maiuscole e minuscole per 'cedar'
. Quell'oggetto esiste, quindi viene restituito. Niente di più, niente di meno.
Ora, se non ci fosse corrispondenza, Stéphane ha ragione e dovresti specificare name
nei defaults
parametro. Tutte le ricerche contenenti il separatore di ricerca __
vengono rimossi dai parametri passati a create()
.