Сортировка поля JSONField путем добавления значения индекса?

Я использую JSONField для хранения пользовательской формы с метками/значениями полей. У меня возникла проблема при отображении формы. Каждый раз, когда форма отображается, порядок изменяется, поскольку я использую словарь. Я думал добавить дополнительное значение в JSONField, чтобы хранить целое число, по которому я могу упорядочивать. Мне интересно, является ли это возможным решением, или есть ли какой-либо другой "лучший" способ поддерживать эту форму в порядке.

У меня есть простая модель,

class House(models.Model):
    form = JSONField(default=dict)

В него загружается json файл как таковой.

{
    "outside": [
        {
            "fields": [
                {
                    "label": "Pool",
                    "value": ""
                },
                {
                    "label": "Shed",
                    "value": ""
                },
            ],
            "index": 0
        }
    ],

    "inside": [
        {
            "fields": [
                {
                    "label": "Bedrooms",
                    "value": ""
                },
                {
                    "label": "Baths",
                    "value": ""
                },
            ],
            "index": 1
        }
    ],

Когда форма отображается в моем представлении, я использую базовую логику

house = House.objects.get(id=1)
form = house.form.items()
return render(request, template, context={'form': form}

С первого раза json загружается нормально, при этом все поля с меткой outside идут впереди, а поля с меткой inside сразу после них.

Outside
1.) Pool <input value="">
2.) Shed <input value="">

Inside
1.) Bedrooms <input value="">
2.) Baths <input value="">

Теперь при жестком обновлении страницы и печати house.form.items() порядок меняется, и при этом шаблон отображает форму с полями inside впереди, а поля outside следуют за ними. Мне определенно нужно, чтобы поля каждый раз располагались по порядку, поэтому я добавил значение индекса, думая, что есть возможность сортировать эти элементы каждый раз на основе значения индекса, но не знаю, как это сделать

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