#javascript #jquery #django #onchange
#язык JavaScript #jquery #джанго #по обмену
Вопрос:
Я пытаюсь показать некоторую базу данных по выбранным данным в раскрывающемся поле, форма представляет собой динамический набор форм ( modelformset_factory
), но она дважды вызывает данные и не вызывает никаких данных при первом выборе, во второй раз затем возвращает данные! и в функции python также ничего не возвращает при первом выборе, при втором выборе данные возвращаются два раза!
вот мой views.py код
@login_required def return_back_imei_oddinfo(request): query = request.GET for item in query: if item.startswith("imei-") and item.endswith("-item"): item_id = query.get(item) print(item) break selling_price= Imei.objects.get(id=item_id).mobile.selling_price, data = { 'selling_price' : selling_price, } return JsonResponse(data)
forms.py
class ImeiInvoiceForm(forms.ModelForm): item = ImeiModelChoiceField(queryset=Imei.objects.filter(status=True),widget=forms.Select(attrs={'onchange':'imeiInfo(this);'})) class Meta: model = ImeiInvoice fields = ['item','price']
и вот мой шаблон
function imeiInfo () { $('select').change(function() { let elm = $(this); data = {}; data[elm.attr("name")] = elm.val(); $.ajax({ url:'/ajax/return_back_imei_oddinfo/', data:data, success:function(data){ console.log(data.selling_price) if (data){ elm.closest("div.child_imeiforms_row").find("input.price").val(data.selling_price); } else{ alert('not inserted') } } }) }) } imeiInfo();
{{imei_forms.management_form}} lt;div id="form-imeilists"gt; {% for imei in imei_forms %} {{imei.id}} lt;div class="child_imeiforms_row"gt; lt;div class="row no-gutters table-bordered"gt; lt;div class="col-md-3"gt; lt;div class="form-group"gt; {{imei.item | add_class:'form-control'}} lt;div class="text-danger text-center" hiddengt;lt;/divgt; lt;/divgt; lt;/divgt; lt;div class="col-md-2"gt; lt;div class="form-group"gt; {{imei.price | add_class:'price'}} lt;div class="text-danger text-center" hiddengt;lt;/divgt; lt;/divgt; lt;/divgt; lt;/divgt; lt;/divgt; {% endfor %} lt;/divgt; lt;div id="empty-imei-invoiceform" class="hidden"gt; lt;div class="row no-gutters table-bordered"gt; lt;div class="col-md-3"gt; lt;div class="form-group"gt; {{imei_forms.empty_form.item | add_class:'form-control'}} lt;div class="text-danger text-center" hiddengt;lt;/divgt; lt;/divgt; lt;/divgt; lt;div class="col-md-2"gt; lt;div class="form-group"gt; {{imei_forms.empty_form.price | add_class:'price'}} lt;div class="text-danger text-center" hiddengt;lt;/divgt; lt;/divgt; lt;/divgt; lt;/divgt; lt;/divgt;
и jquery.min.js
это в верхней части файлов сценариев, есть ли что-то, что я пропустил, пожалуйста, или я что-то неправильно понял? спасибо за ваш ответ