#django
#django
Вопрос:
В моем шаблоне у меня есть кнопка для сбора платы, которая переводит пользователя на следующий экран. Тем не менее, я хочу проверить событие нажатия этой кнопки, если плата уже полностью оплачена и запрашивает пользователя через сообщение на экране. В связанной модели у меня есть метод, который проверяет, полностью ли оплачена плата. Я добавил условие в шаблон, подобный этому, и он отключил кнопку
<td><a href="{% url 'add_fee' student.id %}" class="btn btn-secondary btn-sm {% if student.get_remaining_fee == 0 %}disabled {% endif %}">Add Fee</a></td>
но это увеличивает количество запросов, так как у меня много записей студентов в текущем представлении.
В общем, если я хочу такие проверки, прежде чем пользователь сможет перейти к новому / назначенному представлению, что было бы наилучшей практикой.
Ответ №1:
Поскольку вы просили следовать рекомендациям, я укажу на несколько:
- Разбивка на страницы, использование смещения и ограничения для извлечения списка учащихся — посмотрите на функцию index здесь — тем самым предотвращая слишком много вызовов базы данных за один раз.
- Получение такой информации в идеале не должно требовать дополнительных вызовов БД, объединения таблиц должно быть достаточно, что устраняет необходимость в нескольких вызовах базы данных.
Примечание: я не предлагаю изменять представление / пользовательский интерфейс, поскольку это выходит за рамки данного обсуждения.
Комментарии:
1. Спасибо за ваш отзыв. Я буду искать фрагмент разбивки на страницы подробно. Однако у меня была эта проверка, как показано выше, и она замедляет работу страницы. Время загрузки очень медленное, так как много студентов. Я удалил эту проверку из входных данных, что сделало ее очень быстрой, поскольку только два запроса попадают в БД. Я подумываю об изменении дизайна страницы, чтобы иметь только одну кнопку, и именно поэтому мне нужно вызвать функцию либо через javascript, либо через представление django, чтобы я мог справиться с этим одним выстрелом.