Сортировка поля 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
следуют за ними. Мне определенно нужно, чтобы поля каждый раз располагались по порядку, поэтому я добавил значение индекса, думая, что есть возможность сортировать эти элементы каждый раз на основе значения индекса, но не знаю, как это сделать