Skip to content

Commit ffeca21

Browse files
committed
use Coalesce to handle empty aggregates
1 parent 61e3b3b commit ffeca21

File tree

1 file changed

+3
-5
lines changed

1 file changed

+3
-5
lines changed

adminsortable2/admin.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ def get_extra_model_filters(self, request):
345345
return {}
346346

347347
def get_max_order(self, request, obj=None):
348-
return self.model.objects.aggregate(max_order=Max(self.default_order_field))['max_order'] or 0
348+
return self.model.objects.aggregate(max_order=Coalesce(Max(self.default_order_field), 0))['max_order']
349349

350350
def _bulk_move(self, request, queryset, method):
351351
if not self.enable_sorting:
@@ -422,9 +422,7 @@ class PolymorphicSortableAdminMixin(SortableAdminMixin):
422422
``SortableAdminMixin``.
423423
"""
424424
def get_max_order(self, request, obj=None):
425-
return self.base_model.objects.aggregate(
426-
max_order=Max(self.default_order_field)
427-
)['max_order'] or 0
425+
return self.base_model.objects.aggregate(max_order=Coalesce(Max(self.default_order_field), 0))['max_order']
428426

429427

430428
class CustomInlineFormSet(BaseInlineFormSet):
@@ -451,7 +449,7 @@ def save_new(self, form, commit=True):
451449
default_order_field = getattr(obj, self.default_order_field, None)
452450
if default_order_field is None or default_order_field >= 0:
453451
query_set = self.model.objects.filter(**{self.fk.get_attname(): self.instance.pk})
454-
max_order = query_set.aggregate(max_order=Max(self.default_order_field))['max_order'] or 0
452+
max_order = query_set.aggregate(max_order=Coalesce(Max(self.default_order_field), 0))['max_order']
455453
setattr(obj, self.default_order_field, max_order + 1)
456454
if commit:
457455
obj.save()

0 commit comments

Comments
 (0)