Пользовательская функция Django требует много времени для просмотра ⇐ Python

Программы на Python
Anonymous
Пользовательская функция Django требует много времени для просмотра

Сообщение Anonymous »

У меня есть функция ниже, которая генерирует навигацию, чтобы ее можно было использовать в представлении. Он извлекает статьи, категории статей и подкатегории статей. Основная проблема заключается в том, что при наличии примерно 15 категорий, 46 подкатегорий и 33 статей загрузка этой функции занимает около 7-10 секунд. Как лучше всего справиться с этим, чтобы оно загружалось быстрее?
def generate_navigation_list(request):
articles = Article.objects.all()
article_category = ArticleCategory.objects.all()
articles_sub_category = ArticleSubCategory.objects.all()

# Create a navigation list structure
navigation_list = []

# Iterate over categories
for category in article_category:
category_dict = {
'id': category.id,
'title': category.name,
'subcategory': []
}

# Filter subcategories for the current category
filtered_subcategories = articles_sub_category.filter(category=category)

# Iterate over filtered subcategories
for subcategory in filtered_subcategories:
subcategory_dict = {
'id': subcategory.id,
'title': subcategory.name,
'articles': []
}

# Filter articles for the current subcategory
filtered_articles = articles.filter(sub_category=subcategory).order_by('order')

# Add articles to the subcategory dictionary if there are articles
if filtered_articles.exists(): # Check if there are any articles
for article in filtered_articles:
article_dict = {
'title': article.title,
'slug': article.slug
}
subcategory_dict['articles'].append(article_dict)

# Append subcategory dictionary to category dictionary
category_dict['subcategory'].append(subcategory_dict)

# Append category dictionary to navigation list if it has subcategories with articles
if category_dict['subcategory']:
navigation_list.append(category_dict)

request.session['navigation_list'] = navigation_list
request.session.save()


Подробнее здесь: https://stackoverflow.com/questions/790 ... r-the-view

Вернуться в «Python»