Изменение значений рядов в отношении к другому ряду в django-models
Я работаю над системой флеш-карт на django
вся система Лейтнера заключается в порядке БОКСОВ, например box1, box2 ,box3
, поэтому, когда вы решаете карту в боксе 1, она перемещается назад в бокс 2 и наоборот...
Теперь, что если я хочу изменить порядок ящика? Или даже удалить его? Не лучше ли изменить порядок других ящиков? Например, [box1, box2, box3] => [box1, box2]
Итак, теперь вы поняли идею, вот структура модели BOX в файле django-models:
class Box(models.Model):
name = models.CharField(max_length=100)
order = models.IntegerField(blank=False)
end_days = models.IntegerField(blank=False)
end_hours = models.IntegerField(blank=False)
end_minutes = models.IntegerField(blank=False, default=0)
def __str__(self):
return self.name
Теперь большой вопрос, когда некоторые строки('obj') удалены/порядок изменен, как я могу увеличить/уменьшить другие строки?
И если у вас есть идеи лучше, чем то, что я пытаюсь сделать, пожалуйста, поделитесь ими .
regards
В случае с приказом об изменении, это должно выполняться в представлении или чем-то подобном, там нужно вывести все ячейки и выполнить обновление следующим образом
Пример, переместите 3 в 2 и 2 в 3
old_box_number = 3
new_box_number = 2
for box in Box.objects.all():
if box.sequence < new_box_number: continue
if box.sequence == new_box_number:
box.sequence= old_box_number
box.save()
elif box.sequence == old_box_number:
box.sequence= new_box_number
box.save()
Для удаления сделайте то же самое, но уменьшите верхний ящик на один.