Использование Ajax и CreateView для возврата значения из выпадающего списка - PullRequest
0 голосов
/ 24 июня 2018

Я пытаюсь получить значение выбранного элемента из выпадающего списка в CreateView с помощью вызова Ajax. Например, когда элемент был выбран из раскрывающегося меню, я хочу, чтобы вся связанная с ним информация автоматически отображалась в шаблоне.

Но я не уверен, почему я не смогу вернуть значение выбранного элемента (которое будет необходимо для фильтрации) в CreateView со следующими кодами:

models.py

class Model_Item(models.Model):
    item_name = models.CharField(max_length = 20)
    item_description = models.CharField(max_length = 100)
    item_origin = models.CharField(max_length = 50)
    # and many more fields

    def __unicode__(self):
        return self.item_name

class Model_Cart(models.Model):
    item = models.ForeignKey(Model_Item)
    customer_name = models.CharField(max_length = 50)

HTML

<form method = "POST"> {% csrf_token %}
    <table id = "table_01">
        <tr>
            <th>Item name</th>
            <td>{{ form.item}}</td>
        </tr>
    </table>
    <div>
        preview the description, origin and other fields of the choosen item here -->
    </div>
    <table id = "table_02">
        <tr>
            <th>Customer's name</th>
            <td>{{ form.customer_name}}</td>
        </tr>
    </table>
    <input type = "submit" value = "Submit">
</form>

1011 * Аякс * $(document).ready(function(){ $("#id_item").change(function(){ var item_selection = $(this).val(); $.ajax({ type: "GET", data: {"item_name_id": item_selection} }); }); }); views.py

class View_Cart(CreateView):
    form_class = Form_Cart

    def get_queryset(self):
        item_name_id = self.request.GET.get("item_name_id")
        print item_name_id # <------ Does not print anything

Я ссылался на эту ссылку , но безрезультатно. Этот источник говорит, что мы не можем использовать "get_queryset" в CreateView, но здесь говорит, что "get_queryset" является одной из доступных функций в CreateView.

У кого-нибудь есть решение этого?

...