Alors, je fonde mon code sur la solution de Trey sur:
http://solutions.treypiepmeier.com/2009/12/10/using-jquery-autocomplete-with-django/Jquery plug-in Autocomplete avec Django (Trey solution Piepmeier)
Le script est:
<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>
Le 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')
Le problème est: Il cesse d'affiner les résultats de la recherche après la recherche initiale. Par exemple:
Si je règle len (valeur)> 2, après avoir tapé le 3ème caractère, il me donnera une liste de suggestions. Mais si je continue à taper le 4ème ou 5ème caractère, la liste des suggestions ne change pas.
Des suggestions sur pourquoi c'est?
Est-ce le côté serveur ou problème côté client? Si c'est côté serveur, obtenez-vous les mêmes résultats lorsque vous exécutez les requêtes dans './manage.py shell'? Est-ce que vous entrez des caractères qui donneront des résultats différents avec les 4ème et 5ème caractères? – istruble
Le problème est côté client. Surtout la partie analyse du code. J'ai remarqué (en utilisant Firebug) que quand je me suis débarrassé du code incriminé, il frappe la base de données pour chaque caractère tapé comme il est censé, mais il n'analyse pas la réponse ... Oui, le 4ème et 5ème caractère est censé rétrécir la liste des résultats plus loin. – Sally