diff --git a/src/pretix/base/models.py b/src/pretix/base/models.py index 66c76a4df4..30825dff06 100644 --- a/src/pretix/base/models.py +++ b/src/pretix/base/models.py @@ -649,12 +649,12 @@ class PropertyValue(Versionable): if self.prop: self.prop.event.get_cache().clear() + @property + def sortkey(self): + return self.position, self.pk + def __lt__(self, other): - if self.position < other.position: - return True - if self.position == other.position: - return self.pk < other.pk - return False + return self.sortkey < other.sortkey class Question(Versionable): diff --git a/src/pretix/control/views/forms.py b/src/pretix/control/views/forms.py index ded2d26835..b13e1e5ecf 100644 --- a/src/pretix/control/views/forms.py +++ b/src/pretix/control/views/forms.py @@ -179,7 +179,7 @@ class VariationsFieldRenderer(forms.widgets.CheckboxFieldRenderer): def sort(v): # Given a list of variations, this will sort them by their position # on the x-axis - return v[prop2.identity].identity + return v[prop2.identity].sortkey # We now iterate over the cartesian product of all the other # properties which are NOT on the axes of the grid because we diff --git a/src/pretix/control/views/item.py b/src/pretix/control/views/item.py index e1895a54a9..2d3699f08a 100644 --- a/src/pretix/control/views/item.py +++ b/src/pretix/control/views/item.py @@ -765,7 +765,7 @@ class ItemVariations(ItemDetailMixin, EventPermissionRequiredMixin, TemplateView def sort(v): # Given a list of variations, this will sort them by their position # on the x-axis - return v[prop2.identity].identity + return v[prop2.identity].sortkey # We now iterate over the cartesian product of all the other # properties which are NOT on the axes of the grid because we