首页 文章

无法通过查询对象检索值

提问于
浏览
2
report_qs = CustomReport.objects.filter(id=report_id)

report_qs store below output

Output

{
    "Locator__employer_state": "AR",
    "data_model_name": [
        "Locator",
        "PatientProfile"
    ]
}

问题:如何在Python中从上面的输出中获取所有值和键?

当我尝试从上面的输出访问键和值时,我收到以下错误:

文件"/usr/local/lib/python2.6/dist-packages/django/core/servers/basehttp.py",第283行,在运行self.result = application(self.environ,self.start_response)文件"/usr/local/lib/python2.6/dist-packages/django/core/handlers/wsgi.py",第272行,在 call response = self.get_response(request)文件"/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py",第169行,在get_response response = self中 . handle_uncaught_exception(request,resolver,sys.exc_info())文件"/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py",第218行,在handle_uncaught_exception中返回回调(request,** param_dict)文件"/usr/local/lib/python2.6/dist-packages/django/utils/decorators.py",第93行,在_wrapped_view response = view_func(request,* args,** kwargs)文件"/usr/local/lib/python2.6/dist-packages/django/views/defaults.py",第30行,在server_error中t = loader.get_template(template_name)#您需要创建500.html模板 . 文件"/usr/local/lib/python2.6/dist-packages/django/template/loader.py",第157行,在get_template模板中,origin = find_template(template_name)文件"/usr/local/lib/python2.6/dist-packages/django/template/loader.py",第138行,在find_template中提升TemplateDoesNotExist(name)TemplateDoesNotExist:500.html

2 回答

  • 0

    您当前正在获取所有对象(通过执行 all() ),然后您将其带回 filter(id=report_id) .

    只使用 all() 可以获取所有对象:

    report_qs = CustomReport.objects.all()
    
  • 0

    它是一个字典,因此您可以使用各自的键访问其值,如下所示:

    report_qs = CustomReport.objects.all().filter(id=report_id)
    
    for res in report_qs:
        print res
        # Print Locator_employer_state
        print "Locator Employer State: " + str(res["Locator_employer_state"])
        # Print data_model_name_value
        string_ = ""
        for item in res["data_model_name"]: ### this loop is just for creating a nice string to print
            string_ += str(item) + ", "
        print "Data Model Name: " + string_
    

    如果您只想访问值,还可以使用 .values() 方法:

    for res in report_qs:
        print str(res.values())
    

    只是为了涵盖所有方法,您可以使用 .items() 方法迭代字典:

    for res in report_qs:
       for key, value in res.items():
           print str(key) + ": " + str(value)
    

    你可以阅读更多here .

相关问题