Я хочу обновить элементы на странице, чтобы в реальном времени сообщить пользователю, сколько объектов будет зависеть от выбора критериев в форме.
Для примера для работы форма запрашивает число, и логика django удалит любой экземпляр модели с pk
меньшим, чем это значение, после нажатия кнопки отправки - но перед нажатием пользователь хочетчтобы знать, сколько их будет удалено:
<span id="number-changed">NULL</span> objects will be deleted
, поэтому я хочу получить конечный результат: #number-changed
будет заполнено значением, подобным MyModel.objects.filter(pk__lt=input_number).count()
.
Я установил вызов AJAX для изменений input
через:
$("input").change( function() {
$.ajax({
type: "GET",
url: "{% url 'myapp:bulkdelete' %}",
data: {
csrfmiddlewaretoken: $("input[name='csrfmiddlewaretoken']").val(),
},
success: function (data) {
// code to update #number-changed
}
Мне интересно, как я реализую в представлении, чтобы при успешном GET
функция success
могла использоватьзначение, которое я получаю.Некоторый псевдокод:
# views.py
class MyView(FormView):
# ...
def get(self, request, *args, **kwargs):
input_number = ???
number_changed = MyModel.objects.filter(pk__lt=input_number).count()
# presumably some super().get() call here
return ???
Вопросы:
Могу ли я получить текущий input_number
через request
или его нужно передать как параметр url
при созданииЗапрос AJAX?
Как добавить необходимую информацию, number_changed
в данном случае, к возвращению метода get()
и как получить к ней доступ * success
?
То, как я реализовал AJAX с помощью django, до этого использовал запросы POST
, и я просто возвращаю JsonResponse
с моими необходимыми данными.Тем не менее, при загрузке страницы вызывается начальный get()
, и он должен возвращать полный HttpResponse
- так что, в конечном счете, есть способ добавить в него мою дополнительную информацию, или я ошибаюсь.