Автозаполнение Django на основе выпадающего списка - PullRequest
0 голосов
/ 21 ноября 2018

Я храню данные автозаполнения в объектах SomeObject и успешно использую следующее для автозаполнения с помощью фильтра на основе текущего пользователя:

views.py

def get_autocompletion_list(request):

    if request.is_ajax():
        q = request.GET.get('term', '')

        results = []
        if len(q) > 0:
            my_words = SomeObject.objects.filter(owner=request.user.id)
            words = my_words.filter(word__startswith=q)
            for w in words:
                results.append(w.word)

        data = json.dumps(results)
    else:
        data = ''

    mimetype = 'application/json'
    return HttpResponse(data, mimetype)

шаблон:

<form action="/" method="post" id="">
    {% csrf_token %}

     {{form.category}}
</form>

<input id="searching">

scripts:

  $("#category_id").change(function () {

    console.log("selected category")
    console.log($(category_id).val())

  });


$(function() {

     $("#searching").autocomplete({
       source: "/api/get_autocompletion_list/",
       select: function (event, ui) {
         AutoCompleteSelectHandler(event, ui)
       },
       minLength: 1,
     });
});

Теперь я хочу отфильтровать автозаполнение на основе выпадающего списка form.category, я могу получить текущий выбор в форме, но как быЯ отправляю его на просмотр, где я могу выполнить фильтрацию?

1 Ответ

0 голосов
/ 21 ноября 2018

Мне удалось отправить данные в django, добавив идентификатор для выбранной в данный момент категории в URL, используемый для автозаполнения.

//when value is changed in the dropdown
$("#category_id").change(function () {
  setAutocompletion()
});

//change the url based on the selected drop down value
function setAutocompletion(){
    $("#searching").autocomplete({
      source: "/api/get_autocompletion_list/" + getSelectedValue(),
      select: function (event, ui) {
        AutoCompleteSelectHandler(event, ui)
      },
      minLength: 1,
    });
}

function getSelectedValue() {
    var s = $(id_kategori).val()
    return String(s)
}

function AutoCompleteSelectHandler(event, ui) {
     var selectedObj = ui.item;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...