【发布时间】:2011-07-08 23:36:57
【问题描述】:
所以我想在两个表的 javascript 中返回一个字典,一个 Category 表和一个 Sub_category 表,其中 category = models.ForeignKey(Category)。字典是'Category1':'Sub_cat1,Sub_cat2,...'。我做了下面的代码,但是看起来效率很低,你们能帮我找到另一种方法吗?
谢谢!
from models import Sub_category, Category
# Extra unnecessary query?
def get_json_sub_categories(category):
return get_json(Sub_category.objects.filter(category_id=Category.objects.filter(name=category).values('pk')[0]['pk']).values('name'))
添加: 字典应包含所有类别及其各自的子类别。我可能会创建一个循环或其他东西并为每个类别调用一个查询,但这是很多查询。是否有一个查询可以让我以字典样式获取所有类别及其各自的子类别?
我这样做了:
from models import Sub_category, Category
import json
def get_sub_categories():
return Sub_category.objects.all().values('name', 'category__name')
def get_dict_sub_categories():
sub_dict = {}
sub_queryset = get_sub_categories()
for x in sub_queryset:
if x['category__name'] not in sub_dict:
sub_dict[x['category__name']] = [x['name']]
else:
sub_dict[x['category__name']].append(x['name'])
return sub_dict
def get_json_sub_categories():
return json.dumps(get_dict_sub_categories())
有什么更高效/更快的吗?我的代码看起来还好吗?我还假设这仅通过一个查询完成。这是真的吗?
【问题讨论】:
标签: javascript python sql django json