[pyar] [django] Busqueda basada en varios campos

Gonzalo Delgado gonzalodel en gmail.com
Jue Mar 31 19:51:40 ART 2011


El 31/03/11 18:46, Daniel escribió:
> Hola Gente, necesito hacer una búsqueda basada en varios campos
> algo similar al search_field del admin, pero usarlo desde mis propias
> vistas, ¿puedo reutilizar el search del admin? ¿cómo?
> ¿como logro resultados similares?
> No se como buscar info al respecto, todo me lleva al admin pero no
> puedo encontrar la respuesta
>
> básicamente, tengo un modelo "libro"
>
> y necesito en un cuadro de búsqueda buscar x autor, editorial, isbn etc
> pero sin poner un cuadro para cada uno.

Lamentablemente no parece que lo que hace el admin sea muy reusable, 
pero aquí podés ver cómo lo hace:

http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/views/main.py#L245

esta porción de código es solo una parte de un método que devuelve un 
queryset con lo que se muestra en el listado de un modelo en el admin. 
También mirá las líneas 21 y 63 que hace:

    SEARCH_VAR = 'q'
    self.query = request.GET.get(SEARCH_VAR, '')


Mas o menos lo que hace es:
     - del GET saca el valor de q, que contiene los valores que el 
usuario ingresó en el campo de busqueda
     - para cada valor del atributo search_fields del modeladmin crea 
una instancia de Q[0] con cada uno de los valores del campo de búsqueda
     - filtra el queryset actual con esas instancias Q

Otra opción sería usar Haystack con el backend Simple o Whoosh, lo cual 
está muy bien explicado en la documentación[1]

Saludos.

[0] 
http://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects
[1] http://docs.haystacksearch.org/dev/tutorial.html

-- 
Gonzalo Delgado<gonzalodel en gmail.com>




More information about the pyar mailing list