Những gì bạn đang thấy là hành vi chính xác.
get_or_create
là viết tắt của 'get and return the object khớp với kwargs
, nếu nó không tồn tại, hãy tạo nó bằng defaults
'. Tra cứu của bạn đang tìm kiếm một đối tượng có name
là một đối sánh không phân biệt chữ hoa chữ thường với 'cedar'
. Đối tượng đó tồn tại, vì vậy nó được trả về. Không hơn không kém.
Bây giờ nếu không có kết quả phù hợp, Stéphane đúng, và bạn cần chỉ định name
trong defaults
tham số. Tất cả các tra cứu có chứa dấu phân tách tra cứu __
bị loại bỏ khỏi các tham số được chuyển đến create()
.