Как добавлять +1 к полю модели PositiveIntegerField при добавлении каждой новой записи?
Есть модель Posts. Для произвольной сортировки создано отдельное поле Order = models.PositiveIntegerField.
Задача: в модели переопределяя метод Save - осуществить добавление индекса +1 (от последнего имеющегося индекса) в данное поле при добавлении каждому новому посту.
def save(self):
super().save()
То есть - у каждого поста должен быть ещё Order-index, и если уже имеется 3 поста на сайте, то при добавлении четвертого - у него добавляется в поле индекс 4, и так далее.
Помогите осуществить эту логику. Вроде простая, но не знаю как подступиться.
Ответы (1 шт):
Тогда можно как то так. Сортируем и находим объект с наивысшим значением и присваем его значение +1
def save(self, *args, **kwargs):
max_order_obj = type(self).objects.order_by('-ordering').first()
if max_order_obj:
self.ordering = max_order_obj.ordering + 1
else:
self.ordering = 1
super().save(*args, **kwargs)
Можно улучшить до получения только значения ordering