Отображение полей на основе предпочтений пользователя

Я хотел бы узнать, есть ли более чистый, простой и практичный способ реализации приведенного ниже сценария.

В настоящее время я позволяю пользователям выбирать обязательные (красный), необязательные (красный) или скрытые (черный) поля (предварительно определенные) в webapp. Я храню предпочтения пользователя в базе данных, например, [input_field : user_choice].

Поскольку bootstrap позволяет 12 столбцов в одной строке, я подумал, что если добавить дополнительные поля [order, size], то я смогу распределить обязательные и необязательные поля в нужном порядке. Size может варьироваться от 1-12 и order может иметь дублирующиеся значения.

enter image description here

{'field_name': 'somename1', 'user_choice': 'Required', 'order': 1, 'size': 6},
{'field_name': 'somename2', 'user_choice': 'Optional', 'order': 2, 'size': 6},
{'field_name': 'somename3', 'user_choice': 'Required', 'order': 3, 'size': 12},
{'field_name': 'somename4', 'user_choice': 'Required', 'order': 4, 'size': 6},
{'field_name': 'somename5', 'user_choice': 'Hidden', 'order': 4, 'size': 6},
{'field_name': 'somename6', 'user_choice': 'Hidden', 'order': 5, 'size': 6},
{'field_name': 'somename7', 'user_choice': 'Required', 'order': 6, 'size': 6},
{'field_name': 'somename8', 'user_choice': 'Hidden', 'order': 7, 'size': 6},
{'field_name': 'somename9', 'user_choice': 'Hidden', 'order': 8, 'size': 3},
{'field_name': 'somename10', 'user_choice': 'Hidden', 'order': 9, 'size': 3},
{'field_name': 'somename11', 'user_choice': 'Optional', 'order': 10, 'size': 12}

На основе этого я бы отфильтровал, чтобы получить только объекты, которые имеют значение Required и Optional и зациклил таким образом, чтобы построить ряд из объектов, которые складываются в <= 12. Если ряд уже имеет размер 8, а следующий объект имеет размер 6, то будет инициализирован новый ряд, если только значение порядка не будет одинаковым.

Можно ли это как-то упростить?

Вернуться на верх