2

我定义了下面的类来为投票系统做统计。

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":[
               
            ]
         }
      ]
   }
]

例如,当我收到 2 票提交时,我想相应地更新此 JSONField 中的num_vote(从 0 到 2)和user_list(从[][user_a, user_b])字段。

请问如何查询和更新嵌套 JSONField 数据中的元素?

4

1 回答 1

0

安装 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

于 2021-12-31T06:45:28.050 回答