Итак, я хочу вернуть dict в javascript из двух таблиц: таблицы категорий и таблицы подкатегорий с категорией = 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())
Что-нибудь более эффективное / более быстрое?Мой код выглядит хорошо?Я также предполагаю, что это делается только с одним запросом.Это правда?