Django无法在python中创建对象

2024-06-17 15:49:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建json,但无法创建好的。我的我的反应和我想要的不一样。请帮忙解决。你知道吗

视图.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,但无法创建好的。我的我的反应和我想要的不一样。请帮忙解决。你知道吗


Tags: py视图idjsonfalsecountallrestaurant
3条回答

所以基本上你想要一个字典,但是你得到了一个数组。你知道吗

为了得到你想要的,你应该:

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
}
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)
    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

您的代码snipe返回all_results,这是一个列表,因此您得到的是列表而不是dict。因此您可以将all_results重新定义为dict并更改一些代码。 我不测试我的脚本,但你可以试试。你知道吗

最后,您可以尝试使用pdb来调试您代码。在这里是一个关于pdb的好帖子 python-debugging-pdb

相关问题 更多 >