Обновление полей jQuery + Django [закрыто]
Необходимо обновлять поля в форме Django при выборе значения в поле из выпадающего списка Country. При обработке события jQuery никакие данные в поле формы не передаются. На стороне Django формируется список типа ['RUS', 'USA']. На самой странице, после выбора страны, поле Activity становится пустым. Как это исправить. Думаю, проблема в неправильном JQuery.
Шаблон:
...............
<section class="site_filter">
<div class="container-fluid">
<div class="row">
<div class="col-sm-2 col-2">
<div class="form-group">
<label for="country">Country</label>
<select class="form-control" id="country">
{% for obj in country %}
<option value='{{obj}}'>{{obj}}</option>
{% endfor %}
</select>
</div>
</div>
<div class="col-sm-2 col-2">
<div class="form-group">
<label for="Activity">Activity</label>
<select class="form-control" id="activity">
{% for obj in activity %}
<option value='{{obj}}'>{{obj}}</option>
{% endfor %}
</select>
</div>
</div>
</div>
</div>
</section>
<script>
/* jshint esversion: 6 */
$('#country').on('change', function(){
$.ajax({
type : "GET",
url: "{% url 'info:get_cr_map' %}",
data: {
"country" : $(this).val(),
"csrfmiddlewaretoken": '{{ csrf_token }}',
"dataType": "json",
},
success: function(response){
let activity_option = '';
$.each(response["activity"], function (a, b) {
activity_option += `<option value=${b}>` + b + "</option>";
});
$("#activity").html(activity_option);
},
error: function(response){
console.log(response);
}
});
});
</script>
views.py
def cr_map(request):
countries = Map.objects.exclude(country__isnull=True).\
exclude(country__exact='').order_by('country').values_list('country').distinct()
countries = [i[0] for i in list(countries)]
activity = Map.objects.exclude(activity__isnull=True).\
exclude(activity__exact='').order_by('activity').values_list('activity').distinct()
activity = [i[0] for i in list(activity)]
return render(request, "info/cr_map.html", {"country": countries, 'activity': activity})
def get_cr_map(request):
if request.method == "GET" and request.is_ajax():
country = request.GET.get("country")
try:
country_list = Map.objects.filter(country = country)
except Exception as error:
logging.error(error, exc_info=True)
return JsonResponse({"success":False, 'data':country}, status=400)
activities = list(set([country_list[i].activity for i in range(len(country_list))]))
country_info = {
"activity": activities,
}
return JsonResponse({"country_info":country_info}, status=200)
return JsonResponse({"success":False}, status=400)