Это конкретный вопрос, основанный на попытке увеличить быстродействие при запросе данных.
Итак, я пытался выяснить в самом шаблоне Django, как нарушить условие с первой попытки.Кажется, что это невозможно, и все предложения были использовать вместо логики views.py .Это заставило меня попробовать фильтрацию на основе выполняемого условия.
В моем примере у меня есть два сценария, которые я сравниваю.
(1) В первом,У меня есть один запрос внутри моего views.py , чтобы получить все элементы.Естественно, Item - это схема, которую я использую в своих моделях.В любом случае, внутри шаблона, который я хочу визуализировать, у меня есть передаваемый контекст, и у меня есть 11 отдельных циклов forlops, все повторяющихся в одном и том же цикле all_items.Затем на основе условия (то есть item.category) отображается соответствующий html.
Опять-таки, я хотел сделать 1 цикл, а затем, основываясь на условии, выполнить рендеринг в соответствующие места, но пройти этот цикл all_items только один раз .К сожалению, я не могу разорвать цикл в шаблоне после условия не перерисовывать HTML, который я не хочу на каждой последующей итерации.
Итак, это привело меня к следующему сценарию:
(2) В своих представлениях я создал 11 отдельных запросов (например, item.objects.filter (category = '1')), item.objects.filter (category = '2' и т. д.) . Я, в свою очередь, назначаю каждую из них 11 отдельным переменным, передаваемым через мои представления, в качестве контекста для рендеринга в шаблоне. Это также позволяет мнеудалите условие в шаблоне, где я проверяю категорию.
Интересно, что в последнем примере каждый фильтр запросов аналогичен выполнению одного и того же forloop для all_items в шаблоне, просто сделал немного по-другому? Я экономлю какое-то время с последним? Трудно сказать, просто исходя из моего пользовательского опыта, поэтому любые идеи будут отличными. Спасибо.