Как запрашивать и обновлять вложенные JSON-данные в Django
У меня есть следующий класс, определенный для ведения статистики для системы голосования.
class FormPage(AbstractForm):
submission_stats = models.JSONField(null=True, editable=False)
Теперь у меня есть submission_stats
в следующем формате:
[
{
"id":4,
"label":"checkboxes",
"choices":[
{
"content":"option-A",
"num_vote":0,
"user_list":[
]
},
{
"content":"option-B",
"num_vote":0,
"user_list":[
]
},
{
"content":"option-C",
"num_vote":0,
"user_list":[
]
}
]
},
{
"id":7,
"label":"Radio Button",
"choices":[
{
"content":"option-1",
"num_vote":0,
"user_list":[
]
},
{
"content":"option-2",
"num_vote":0,
"user_list":[
]
},
{
"content":"option-3",
"num_vote":0,
"user_list":[
]
}
]
}
]
Когда я получаю сообщение о голосовании, я хочу обновить num_vote
и user_list
поля в этом JSONField соответствующим образом.
Как запросить и обновить элементы во вложенных данных JSONField, пожалуйста?
установите библиотеку json pip install json
import json
data = json.load(submission_stats)
теперь эти данные являются словарем python. обновляйте их как хотите
чтобы сохранить обновленные данные обратно в поле json, преобразуйте словарь обратно в json следующим образом
json.dumps(data, indent = 4)
и сохранить
плюс, если вы хотите использовать sql в вашем проекте, я настоятельно рекомендую вам использовать
from django_extensions.db.fields.json import JSONField
вместо
models.JSONField
потому что models.JSONField не очень хорошо сочетается с SQL