所以,我立足我的代碼對三分球的解決方案上:
http://solutions.treypiepmeier.com/2009/12/10/using-jquery-autocomplete-with-django/jQuery的自動完成插件和Django(三分球Piepmeier溶液)
的腳本是:
<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,在我鍵入第三個字符後,它會給我一個建議列表。但如果我繼續輸入第4或第5個字符,則建議列表不會改變。
有關這是爲什麼的任何建議?
是有問題的服務器端或客戶端?如果它是服務器端的,當你在'./manage.py shell'中運行查詢時,你會得到相同的結果嗎?你是否輸入了與第4個和第5個字符會導致不同結果的字符? – istruble 2010-04-13 04:33:23
問題在於客戶端。尤其是代碼的解析部分。我注意到(使用Firebug),當我擺脫了有問題的代碼時,它會按照它應該對每個鍵入的字符點擊數據庫,但它不會解析響應... 是的,第4個和第5個字符是應該進一步縮小結果列表。 – Sally 2010-04-13 16:59:21