Как обновить текстовые поля страницы формы шаблона из базы данных MySQL, выбрав другой вариант из выпадающего без отправки запроса - PullRequest
0 голосов
/ 11 мая 2019

У меня есть сценарий, в котором я создал страницу формы с помощью 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, но не может выбросить это динамическое значение на страницу формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...