0
votar en contra
favorito
tengo el siguiente problema, actualmente hago filtrado de datos pero al momento de buscar tengo que dar enter para realizar la búsqueda, y colocar exactamente el nombre como esta alojado en la base de datos, lo que quiero lograr es que no importa el texto que coloque en el buscador, que al momento de estar escribiendo me arroje los resultados sea en minúsculas o mayúsculas. un buscador tipo google...
me imagino que es con ajax el problema que aun soy algo novato para usar ajax. saludo espero me puedan ayudar
view.py
class RBMidentificadorListView(ListView):
model = Identificador
template_name = 'identificadores/lista.html'
context_object_name = 'lista_identificador'
def get_context_data(self, **kwargs):
ctx = super(RBMidentificadorListView, self).get_context_data(**kwargs)
ctx['search_url'] = 'listar_identificador'
return ctx
def get_queryset(self):
queryset = super(RBMidentificadorListView, self).get_queryset()
# En el admin_base.jade tenemos un input#search(name='q', type='search')
# usamos la sig linea para obtener la consulta solicitada.
q = self.request.GET.getlist('q')
terms = [term for term in q]
if q: # Si el campo no esta vacio, construimos el filtro
queryset = reduce(operator.or_,
(Identificador.objects.filter(Q(clave__contains=t) \
| Q(nombre__contains=t))
for t in terms
)
)
return queryset
urls.py
url(r'^list/$', RBMidentificadorListView.as_view(), name='listar_identificador'),
**html**
{% if search_url %}
<li> <!-- solo donde se tengan registros-->
<form action='{% url search_url %}' method='GET'>
<div class="input-field">
<input id="search" type="search" name='q'>
<label for="search"><i class="material-icons">search</i></label>
<i class="material-icons">close</i>
</div>
</form>
</li>
{% endif %}