Skip to content

Commit 1495714

Browse files
committed
fix #371: default_order_field might not be set
1 parent b680b09 commit 1495714

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

adminsortable2/admin.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from django.contrib import admin, messages
1010
from django.contrib.contenttypes.forms import BaseGenericInlineFormSet
1111
from django.contrib.contenttypes.models import ContentType
12-
from django.core.exceptions import ImproperlyConfigured
12+
from django.core.exceptions import ImproperlyConfigured, FieldDoesNotExist
1313
from django.core.paginator import EmptyPage
1414
from django.db import router, transaction, models
1515
from django.db.models import OrderBy
@@ -503,10 +503,15 @@ def save_new(self, form, commit=True):
503503
"""
504504
obj = super().save_new(form, commit=False)
505505

506-
order_field_value = getattr(obj, self.default_order_field, None)
507-
if order_field_value is None or order_field_value <= 0:
508-
max_order = self.get_max_order()
509-
setattr(obj, self.default_order_field, max_order + 1)
506+
try:
507+
self.model._meta.get_field(self.default_order_field)
508+
except FieldDoesNotExist:
509+
pass
510+
else:
511+
order_field_value = getattr(obj, self.default_order_field)
512+
if order_field_value is None or order_field_value <= 0:
513+
max_order = self.get_max_order()
514+
setattr(obj, self.default_order_field, max_order + 1)
510515
if commit:
511516
obj.save()
512517
# form.save_m2m() can be called via the formset later on

0 commit comments

Comments
 (0)