Có chức năng Django nào sẽ cho phép tôi lấy một biểu mẫu đối tượng cơ sở dữ liệu hoặc Không nếu không có gì khớp?Django: Nhận dạng đối tượng DB hoặc 'Không' nếu không có gì khớp với
Ngay bây giờ tôi đang sử dụng một cái gì đó như:
foo = Foo.objects.filter(bar=baz)
foo = len(foo) > 0 and foo.get() or None
Nhưng đó không phải là rất rõ ràng, và nó lộn xộn có ở khắp mọi nơi.
Bạn biết bạn chỉ có thể sử dụng foo = foo [0] nếu foo khác Không –
Python có toán tử bậc ba, bạn không phải sử dụng toán tử boolean. Ngoài ra, ['len (foo)' là xấu] (https://docs.djangoproject.com/en/dev/ref/models/querysets/): "* Lưu ý: Không sử dụng len() trên QuerySets nếu tất cả Việc bạn muốn làm là xác định số lượng bản ghi trong tập hợp. Việc xử lý đếm ở cấp cơ sở dữ liệu hiệu quả hơn nhiều, sử dụng SELECT COUNT() và Django cung cấp phương thức count() vì lý do chính xác này. * ". Viết lại: 'foo = foo [0] nếu foo.exists() else None ' –
có thể trùng lặp của [Trong Django, làm thế nào để object.get, nhưng trả về None khi không có gì được tìm thấy?] (Http://stackoverflow.com/question/3090302/in-django-how-do-i-đối tượng-get-nhưng-return-none-khi-không-gì-là-tìm thấy) – sleepycal