2015-07-24 2 views
1

Это мой взгляд Джанго функция запроса Ajax:JQuery результаты щ автозаполнения не отображается в HTML выпадающего меню

def get_town(request): 
    if request.is_ajax(): 
     q = request.GET.get('term', '') 
     towns = Town.objects.filter(name__icontains=q) 
     results = [] 
     for name in towns: 
      name_json = {} 
      name_json['name'] = name.name 
      results.append(name_json) 
     data = json.dumps(results) 
    else: 
     data = 'fail' 
    mimetype = 'application/json' 
    return HttpResponse(data, mimetype) 

Urls и все настройки красиво.

Мой автозаполнения это:

$(function() { 
    $("#id_town").autocomplete({ 
    source: "/api/get_town/", 
    minLength: 3, 
    }); 
}); 

Однако, вы можете видеть на изображении ниже, что результаты, хотя возвращается и доступны из запроса, не отображается в выпадающем списке. В соответствии с введенными ключами в поле ввода на изображении ниже, я получил следующие результаты: [{"name": "Densuano"}]

В чем проблема? Почему нет раскрывающегося списка?

enter image description here

+0

не решение, но это определенно поможет вам: '' data = json.dumps (list (Town.objects.filter (name__contains = q) .values ​​('name'))) '' –

ответ

1

Я понял:

name_json['name'] = name.name 

был виновником. Вышеизложенное составляло ключ, список значений, который автозаполнение, как-то не могло интерпретировать. I изменено на

name_json = name.name 

и это сработало.

+0

вы попробовали мое выше решение в комментарии? это лучше, чем создание собственного списка, поскольку у вас уже есть механизм –

Смежные вопросы