【问题标题】:JSON - Django/Webdatarocks: unable to correctly serialize data in JSONJSON - Django/Webdatarocks:无法正确序列化 JSON 中的数据
【发布时间】:2020-05-03 05:46:28
【问题描述】:

我目前正在开发一个 Django 项目并尝试实现 WebDataRocks WebDataRocks 是用于数据分析和可视化的免费网络报告工具

我在工作,但我的问题是正确显示要在 Webdatarocks 中更新的数据 我想更新我的每个模型。

我有一个视图名称数据与加载 WebDataRocks 的模板一起使用

def data(request):
    data = serializers.serialize("json", mymodel.objects.filter(med_ide__lte=10))
return render(request, 'myapp/data.html', {'data':data})

我不太了解 json 的生成方式,因为我得到了这种格式:

[
    {
        "model": "myapp.mymodel", 
        "pk": 1, 
        "fields": 
            {
               "var1": 1, 
               "var2": "ABC", 
               "var3": "code", 
               "var4": "text", 
               "var5": null, 
               "var6": "'text'", 
               "var7": null
             }
     }, 
     {
        "model": "myapp.mymodel", 
        ....
     }
]

我可以在 webdatarocks 表中访问的唯一 2 个变量是 myapp.mymodel 和 pk 我尝试使用 data['fields'] 之类的东西仅提取我需要的部分数据(=fields),但这不是正确的语法

怎么了?

【问题讨论】:

    标签: json django serialization webdatarocks


    【解决方案1】:

    您必须从 json 中获取字段值,例如 data.get('fields'),然后在上下文中发送。

    【讨论】:

    • 感谢您的回复。我尝试 data = serializers.serialize("json", Medicament.objects.filter(med_ide__lte=10)).get('med_dru','med_num') 但我得到一个错误 'str' object has no attribute 'get'
    • 我也尝试使用 values 方法来提取我感兴趣的部分:data = serializers.serialize("json", Medicament.objects.filter(med_ide__lte=10).values('med_ide','med_num ','med_dru')) 但得到另一个错误 'dict' object has no attribute '_meta'
    • 我控制这样的数据类型,它是一个查询集
    • repl.it/repls/WorldlyPushyLicense 你可以像这样使用 dict 进行操作
    • 使用序列化程序返回的对象。序列化不是一个列表,因此您的解决方案不起作用;我尝试投射到列表中,但相同
    【解决方案2】:

    我找到了一个解决方案(如果它是一个好的解决方案但似乎有效,则不要这样做)使用列表传递到上下文而不是使用序列化程序 data = json.dumps(list(Medicament.objects.filter(med_ide__lte=10).values('med_ide','med_num','med_dru'))))

    我可以使用 values() 方法来提取我需要的字段

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      相关资源
      最近更新 更多