我是 ajax 的新手,也是 django 的初學者。目前有兩個選擇輸入“MF_name”和“PD_name”。我需要根據 MF_name 的選擇獲得 PD_name 選項。這是我需要ajax的地方。我需要使用 onchange 并為 PD_name 設定查詢集。
有人可以提供一個簡單的指南嗎?真的很感謝幫助謝謝!
queryset = Product.objects.only('name').filter(MFID=MFID)
#Html
<div class="container">
<div class="row">
<div class="col">
{% csrf_token %}
{{mf.MF_name}}
<!--- This is the element for id_MF_name it is outside of the table. --->
<!---
<select name="MF_name"
onblur="form_validation({'element' : this,})"
required="" id="id_MF_name">
</select>
--->
</div>
</div>
</div>
<tr id="emptyRow">
<td colspan="6" style="text-align:center;">Please select a Manufacturing Company first.</td>
</tr>
<tr class="clone_tr displayNone">
<td>{{ prd.PD_name }}</td>
<td>{{prd.PDID}}</td>
<td>{{rtk_prd.qty}}{{rtk_prd.qty.errors}}</td>
<td>
<span class="input-group p-0">
<div class="input-group-text">RM</div>
{{prd.restock_price}}
</span>
</td>
<td>{{rtk.remark}}</td>
<td><button type="button" class="btn" onclick="clone_element(this,'.clone_tr','.my-tbody',word)"><i class="fas fa-plus-square fa-lg"></i></button></td>
<td><button type="button" class="btn" onclick="clone_element(this,'.clone_tr','.my-tbody',word)"><i class="fas fa-plus-square fa-lg"></i></button></td>
#ajax
$('#id_MF_name').on('change', function (e) {
e.preventDefault();
var MF_name = $(this).val();
$.ajax({
'url': '{% url "Restock:Ajax" %}',
'data': {
'MF_name' : MF_name,
'csrfmiddlewaretoken' : '{{csrf_token}}'
},
dataType: 'json',
success: function (response) {
$('#emptyRow').remove();
$('.clone_tr').removeClass("displayNone");
},
});
});
#urls.py
path('ajax/', views.updateAjax, name='Ajax'),
#views.py
#this is the part where I wasn't sure what I'm suppose to do after passing the data from ajax to views.
#Please provide explanation on what I'm suppose to do here to set PD_name options.
def updateAjax(request):
if request.is_ajax():
MFID = request.GET.get('MF_name', None)
print(MFID)
context = {
}
return render(request, 'Restock/Restock.html', context)
解決方案
感謝 Ankit Tiwari 和 Sangeeth Subramoniam 的幫助。對于那些好奇它是如何作業的,你可以閱讀這篇文章
使用 Django 實作依賴/鏈式下拉串列
Ankit Tiwari 解決方案也有效。因此,有兩個參考可供任何人查看作為示例。
uj5u.com熱心網友回復:
$('#id_MF_name').on('change', function (e) {
e.preventDefault();
var MF_name = $(this).val();
$.ajax({
'url': '{% url "Restock:Ajax" %}',
'type': 'GET',
'data': {
'MF_name' : MF_name,
},
dataType: 'json',
success: function (response) {
console.log(response);
// do whatever you want
$('#emptyRow').remove();
$('.clone_tr').removeClass("displayNone");
},
error: function (response) {
alert(response);
},
});
});
在你的觀點中你必須這樣做
def updateAjax(request):
if request.is_ajax():
MFID = request.GET.get('MF_name', None)
print(MFID)
queryset = Product.objects.only('name').filter(MFID=MFID)
response = {
'data': queryset
}
return JsonResponse(response)
return render(request, 'Restock/Restock.html')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/391767.html
標籤:Python 查询 姜戈 阿贾克斯 django-views
