From d1413c5d703c60dfb9e2a418c79b3e4aed32ffac Mon Sep 17 00:00:00 2001 From: François Freitag Date: Fri, 13 Apr 2018 18:39:10 -0700 Subject: Refs #28312 -- Added an optimized __bool__() to ModelChoiceIterator. COUNT is more expensive than EXISTS; use the latter when possible. --- django/forms/models.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'django/forms') diff --git a/django/forms/models.py b/django/forms/models.py index 67006ba390..cf66f10c88 100644 --- a/django/forms/models.py +++ b/django/forms/models.py @@ -1145,6 +1145,9 @@ class ModelChoiceIterator: # and __len__() won't be called. return self.queryset.count() + (1 if self.field.empty_label is not None else 0) + def __bool__(self): + return self.field.empty_label is not None or self.queryset.exists() + def choice(self, obj): return (self.field.prepare_value(obj), self.field.label_from_instance(obj)) -- cgit v1.3