У меня есть сценарий, в котором я создал страницу формы с помощью Django, а затем выбираю другой продукт из выпадающего меню продукта.Затем я могу передать это название продукта в django views.py.Там я использую значение этого продукта и ищу соответствующее описание этого продукта из таблицы базы данных mysql.Теперь я хочу добавить это описание на одну и ту же страницу формы в другом текстовом поле.Требование заключается в том, что если я выберу другой продукт, например, «TV», то описание телевизора будет извлечено из соответствующей таблицы mysql db, и это описание будет перенесено на страницу формы.
form.html
<label>Product * </label>
<select class="dropdown" id="dropdown" name="product">
<option value="" selected="selected"></option>
<option value="TV">TV</option>
<option value="Laptop">Laptop</option>
<option value="Mobile">Mobile</option>
</select><br>
<script>
$(document).ready(function(){
$('#dropdown').on('change',function(e){
var e = document.getElementById("dropdown");
var productName = e.options[e.selectedIndex].value;
console.log("Dropdown Product Name: "+productName);
$.ajax({
url:"",
method:'GET',
// send selected data to the formReq method which is in views.py
data : {'product' : $(this).val()}, // 'product' will be used in request.GET.get('product') which is in views.py, $(this).val() is selected item,
success:function(data){
//console.log(data);
}
});
});
});
</script>
views.py
def formReq(request):
#name = request.session['requestor']
if request.method == 'GET':
prod_name = request.GET.get(
'product') # we are getting selected item with this line. we defined 'product' in ajax file
print("Product name from dropdown: %s " % prod_name)
prod_id = None
for prod in HfRequest.objects.raw('SELECT * FROM product WHERE name= %s', [prod_name]):
prod_id = prod.id
break
print("Product ID is: %s " % prod_id)
detail = ""
ProductName = None
#ProductName = ProductDetail.objects.all()
ProductName = ProductDetail.objects.filter(product_id=prod_id)
for name in ProductName:
detail = name.detail
print("Product Detail : %s " % detail)
context_dict = {'detail': detail}
print(" Product Detail is: %s " % context_dict['detail']) # this prints the details on console
context = RequestContext(request, context_dict)
return render(request, 'NewReqTemp/form.html', context_dict)
Ниже приведено текстовое поле в form.html, которое будет заполнено информацией о продукте…
<label for="productDetails">Product Details</label>
<input type="text" name="productDetails" id="productDetails" size="38" value=""><br>
<script>
$(document).change(function() {
console.log('I am here');
getSelectValue();
});
</script>
<script type='text/javascript'>
function getSelectValue() {
field = document.querySelector('#productDetails');
var prod_detail = "{{detail}}"; // Here i always get blank string
console.log("Received name from view: " + prod_detail); // prints blank product details
field.value = prod_detail;
}
</script>
Опять же, если я выберу другое название продукта, например «Мобильный», то текстовое поле «Сведения о продукте», приведенное выше, будет обновлено с соответствующими данными.
Я могу получить соответствующие сведения о продукте в представлениях..py, но не может выбросить это динамическое значение на страницу формы.