2017-09-20 96 views
0

我已经使用下面的查询从特定表中获取结果。如何从Django python中的给定字典中获取字段的值

industries.py:

from demo.models import IndustryCat1 
import datetime 
from django.db.models import Q 

class Industries: 

    @staticmethod 
    def getIndustries(indId): 
     """ 
      Get contacts from contact_list where invitor id is same as given owner_id. 
      Args: 
       user_id 
      Returns: 
       contact user object 
     """ 
     try: 

      return IndustryCat1.objects.filter() 


     except IndustryCat1.DoesNotExist: 
      return None 

views.py:

# -*- coding: utf-8 -*- 
from django.http import HttpResponse 
from models import IndustryCat1 
from demo.core.persistence.Industries import * 
from django.shortcuts import get_object_or_404, render, render_to_response 
from django.core import serializers 
import json 

def index(request): 


    industry = Industries() 
    qs = serializers.serialize("json", industry.getIndustries(1)) 

    return HttpResponse(qs) 


    #return render(request, 'demo/test/isndustries_catagories.html', context) 

其中Qs将返回:

[{ 
    "model": "demo.industrycat1", 
    "pk": 1, 
    "fields": { 
     "name": "Division A: Agriculture, Forestry, And Fishing" 
    } 
}, { 
    "model": "demo.industrycat1", 
    "pk": 2, 
    "fields": { 
     "name": "Division B: Mining" 
    } 
}, { 
    "model": "demo.industrycat1", 
    "pk": 3, 
    "fields": { 
     "name": "Division C: Construction" 
    } 
}, { 
    "model": "demo.industrycat1", 
    "pk": 4, 
    "fields": { 
     "name": "Division D: Manufacturing" 
    } 
}] 

我想获取 “田” 指数值。 如果不可能,那么请建议我可以使用什么,而不是序列化来获取查询返回的对象内的值。

在此先感谢。

+0

什么样的价值观,你希望找回?所有的名字? –

+0

值域内。 – Simer

+0

这是针对特定型号还是针对所有型号? –

回答

1

获取具有列表理解的所有名称。

names = [record['fields']['name'] for record in qs] 

获得全部fields的列表理解。

fields = [record['fields'] for record in qs] 
+0

感谢您的帮助@oluwafemi,但我得到TypeError:字符串索引必须是整数。我已经把qson放在哪里了。 – Simer

+0

糟糕!这是因为你的数据是一个json字符串。 –

+0

你可以用上下文来更新你的问题吗? –

0

使用列表理解:

data = [ 
    { 
     "model": "demo.industrycat1", 
     "pk": 1, 
     "fields": { 
      "name": "Division A: Agriculture, Forestry, And Fishing" 
     } 
    }, 
    { 
     "model": "demo.industrycat1", 
     "pk": 2, 
     "fields": { 
      "name": "Division B: Mining" 
     } 
    }, 
    { 
     "model": "demo.industrycat1", 
     "pk": 3, 
     "fields": { 
      "name": "Division C: Construction" 
     } 
    }, 
    { 
     "model": "demo.industrycat1", 
     "pk": 4, 
     "fields": { 
      "name": "Division D: Manufacturing" 
     } 
    } 
] 



print ([each_field["fields"]["name"] for each_field in data]) 
+0

感谢您的帮助。我已更新问题。 – Simer

相关问题