そのため、Trey のソリューションに基づいてコードを作成しています:
http://solutions.treypiepmeier.com/2009/12/10/using-jquery-autocomplete-with-django/
スクリプトは次のとおりです。
<script>
$(function() {
$('#id_members').autocomplete('{{ object.get_absolute_url }}members/lookup', {
dataType: 'json',
width: 200,
parse: function(data) {
return $.map(data, function(row) {
return { data:row, value:row[1], result:row[0] };
});
}
}).result(
function(e, data, value) {
$("#id_members_pk").val(value);
}
);
}
);
</script>
views.py:
def members_lookup(request, pid):
results = []
if request.method == "GET":
if request.GET.has_key(u'q'):
value = request.GET[u'q']
# Ignore queries shorter than length 1
if len(value) > 2:
model_results = Member.objects.filter(
Q(user__first_name__icontains=value) | Q(user__last_name__icontains=value)
)
results = [ (x.user.get_full_name(), x.id) for x in model_results ]
json = simplejson.dumps(results)
print json
return HttpResponse(json, mimetype='application/json')
問題は
、最初のルックアップ後に検索結果の絞り込みを停止することです。例:
len(value) > 2 を設定した場合、3 番目の文字を入力すると、候補のリストが表示されます。しかし、4 番目または 5 番目の文字を入力し続けても、候補のリストは変わりません。
これがなぜなのかについての提案はありますか?