Django无法在python中创建对象

时间:2018-09-26 10:10:17

标签: python arrays django python-3.x django-views

我正在尝试创建json但无法创建正确的。我的响应与我想要的不相似。请帮助解决。

views.py

        json={}
        all_results=[]
        restaurants={}
        for i in restaurant:
            restaurant=Restaurant.objects.get(id=i.id)

            restaurant_serializer=RestaurantSerializers(restaurant)
            json['distace'] = i.distance 
            json['review_count']=reviews
            json['liked']=False

            restaurants['nearby_restaurants']=json
            restaurants['popular_restaurants']=json
            all_results.append(restaurants)
        return all_results

响应:我正在得到

[
        {
            "top_reviewed_restaurants": {
                "distace": 1.53590595706412,
                 "review_count": 0,
                "liked": false
            },
            "nearby_restaurants": {
                "distace": 1.53590595706412,
                "review_count": 0,
                "liked": false

            }

        }
]

回复:我想要的

{
  "nearby_restaurants": [
    {
     "distace": 1.53590595706412,
     "review_count": 0,
     "liked": false
    }
  ],
  "popular_restaurants": [
    {
      "distace": 1.53590595706412,
      "review_count": 0,
      "liked": false
    }
  ]

}

我正在尝试创建json但无法创建正确的。我的响应与我想要的不相似。请帮助解决。

3 个答案:

答案 0 :(得分:1)

    json={}
    all_results={}
    restaurants=[]
    for i in restaurant:
        restaurant=Restaurant.objects.get(id=i.id)

        restaurant_serializer=RestaurantSerializers(restaurant)
        json['distace'] = i.distance 
        json['review_count']=reviews
        json['liked']=False

        restaurants.append(json)
        all_results['nearby_restaurants']=restaurants
        all_results['popular_restaurants']=restaurants
    return all_results

您的代码狙击返回all_results是一个列表,所以您得到的是列表而不是字典。因此您可以重新定义all_results来决定和更改一些代码。 我没有在脚本中进行测试,但是您可以尝试。

最后,您可能尝试使用pdb调试代码。这是有关pdb的一篇不错的文章 python-debugging-pdb

答案 1 :(得分:0)

因此,基本上,您需要一个字典,但是要得到一个数组。

要获得想要的东西,您应该具备:

all_results={
    'nearby_restaurants': [],
    'popular_restaurants': []
}

(...)

all_results['nearby_restaurants'].append(json)
all_results['popular_restaurants'].append(json)

这是考虑到您的json变量包含以下值:

{
 "distace": 1.53590595706412,
 "review_count": 0,
 "liked": false
}

答案 2 :(得分:0)

our=[{
   "popular_restaurants":{"distace": 1.53590595706412,"review_count": 0,"liked": False},
    "nearby_restaurants": {"distace": 1.53590595706412,"review_count": 0,"liked": False}
}]

desired={
         "nearby_restaurants": [{"distace": 1.53590595706412,"review_count": 0,"liked": False}],
        "popular_restaurants": [{"distace": 1.53590595706412,"review_count": 0,"liked": False}]
   }


new_dict={}
new_json= (our[0])

nearby=[]
pop=[]

nearby.append((new_json['nearby_restaurants']))
pop.append((new_json['popular_restaurants']))


new_dict['popular_restaurants']=pop
new_dict['nearby_restaurants']=nearby
print (new_dict)