class
OrderedModel
pretalx.common.models.mixins.OrderedModel source
Provides methods to move a model up and down in a queryset.
Implement the get_order_queryset method as a classmethod or staticmethod to provide the queryset to order.
Attributes 1
order_field'position'Properties 1
Defined here
order_querysetsource
@property
def order_queryset(self):
return self.get_order_queryset(event=self.event)
Methods 2
Defined here
get_order_queryset(**kwargs)source
@staticmethod
def get_order_queryset(**kwargs):
raise NotImplementedError
move(up=True)source
def move(self, up=True):
queryset = list(self.order_queryset.order_by(self.order_field))
index = queryset.index(self)
if index != 0 and up:
queryset[index - 1], queryset[index] = queryset[index], queryset[index - 1]
elif index != len(queryset) - 1 and not up:
queryset[index + 1], queryset[index] = queryset[index], queryset[index + 1]
for index, element in enumerate(queryset):
if element.position != index:
element.position = index
element.save()