Получение длины запроса с помощью Ajax / Django
В соответствии с выбором в форме, я хочу получить количество записей, которые соответствуют id выбранных данных, как целое число.
Вот мое мнение :
def loadRelationalForm(request):
main_task_id = request.GET.get('main_task_id')
relational_tasks = TaskTypeRelations.objects.filter(main_task_type_id = main_task_id)
data_len = len(relational_tasks)
return JsonResponse({'data': data_len})
Вот мой ajax :
<script>
$("#id_user_task-0-task_types_id").change(function () {
const url = $("#usertask-form").attr("data-relationalform-url");
const mainTaskId = $(this).val();
$.ajax({
url: url,
data: {
'main_task_id': mainTaskId,
},
success: function (resp) {
console.log(resp.data);
}
});
});
Я хочу написать количество реляционных задач, связанных с main_task_id
выбранными данными в форме. Но я не смог этого сделать. Спасибо за помощь. С уважением
Убедитесь, что данные, которые вы извлекаете, являются целым числом. Эта строка :
main_task_id = request.GET.get('main_task_id')
Может быть строкой, и результирующий запрос не найдет совпадений.
Кроме того, если вам нужно несколько связанных объектов, у вас есть более эффективный способ сделать это :
def loadRelationalForm(request):
main_task_id = request.GET.get('main_task_id')
if main_task_id:
main_task_id = int(main_task_id)
main_task = TheMainTaskModel.objects.get(id=main_task_id)
related_task_count = main_task.tasktyperelations_set.count()
return JsonResponse({'data': related_task_count})
См. документ о обратных отношениях и .count()