• Как правильно сделать position у записи в бд?

    @dimuska139
    Backend developer
    Сам недавно с такой же примерно задачей столкнулся, правда в Питоне. Храню позицию в базе, а при смене позиции "сдвигаю" нужные элементы, чтобы нужные позиции перестраивались. Возможно, Вам пригодится:
    touched_question = TestQuestion.objects.get(id=kwargs['question_id'])
    questions = TestQuestion.objects.filter(test_id=touched_question.test_id)
    for question in questions:
        if question.id != kwargs['question_id']:
            if touched_question.number < question.number <= new_number:  # Сдвиг вправо
                question.number -= 1
                question.save()
            if new_number <= question.number < touched_question.number:  # Сдвиг влево
                question.number += 1
                question.save()
        touched_question.number = new_number
        touched_question.save()

    Правда в моем случае данных мало, а в Вашем это решение, возможно, не будет оптимальным. Потому что тут запросы в цикле))
    Ответ написан
    Комментировать
  • Как правильно сделать position у записи в бд?

    Вот отличная статья с подходящими вариантами, их плюсами и минусами.
    https://begriffs.com/posts/2018-03-20-user-defined...
    Ответ написан
    Комментировать