[Python-es] Busqueda compleja en BD

gabriel fernandez gabofer82 en gmail.com
Jue Jun 28 17:01:38 CEST 2012


Ok, pero yo quiero hacer un queryset, por eso uso Q, porque la consulta
evalua muchas opciones, no se si las formas son excluyentes, como seria
raw en una consulta con Q?

El 28 de junio de 2012 11:51, Eduardo Matus <ematus en gmail.com> escribió:

> Tambien esta "raw"
>
> resultados = Modelo.objects.raw("select * from foo")
>
> lo que hace es que mapea las columnas a los campos del modelo, como si
> fuera objetos POCO.
>
>
> 2012/6/28 Manuel Ignacio Franco Galeano <maigfrga en gmail.com>
>
>> tambien esta la opcion de hacer con sql
>> https://docs.djangoproject.com/en/dev/topics/db/sql/
>>
>>
>>
>> def my_custom_sql():
>>     from django.db import connection, transaction
>>     cursor = connection.cursor()
>>
>>     # Data modifying operation - commit required
>>     cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [self.baz])
>>     transaction.commit_unless_managed()
>>
>>     # Data retrieval operation - no commit required
>>     cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz])
>>     row = cursor.fetchone()
>>
>>     return row
>>
>>
>>
>>
>>
>>
>>
>>
>> El 28 de junio de 2012 16:39, Eduardo Matus <ematus en gmail.com> escribió:
>>
>> primero que nada, esto no es una "consulta compleja".
>>> if seleccion == 'todo':
>>>     qset = ( Q(Modelo__contains='opcion1') |
>>> Q(Modelo__contains='opcion2'))
>>>
>>> 2012/6/28 gabriel fernandez <gabofer82 en gmail.com>
>>>
>>>>  Hola Lista!!!
>>>>
>>>> Agradezco a quién me pueda dar una mano!
>>>>
>>>> El problema es como sigue:
>>>>
>>>> Tengo una busqueda en la cual uso tres radio button:
>>>>
>>>> Opcion 1      Opcion 2   Opcion 1-2(Ambas)
>>>>
>>>> En la vista cuando voy a procesar el formulario tengo algo asi (luego
>>>> de validar):
>>>>
>>>> seleccion = form.cleaned_data['opciones']
>>>> qset = (
>>>>            Q(Modelo__contains=seleccion)
>>>> )
>>>>
>>>> El problema consiste en como hacer cuando se selecciona la Opcion 1-2
>>>> ya que engloba
>>>> las dos opciones anteriores, hay algo que indique que quiero todo algo
>>>> tipo:
>>>>
>>>> qset = (
>>>>            Q(Modelo__contains='todo')
>>>> )
>>>>
>>>> Uso el modulo Q para consultas complejas porque en realidad tengo mas
>>>> de una seleccion
>>>> como la anterior. Muestro una solamente porque el resto son iguales, y
>>>> van tambien en la misma
>>>> tupla de qset.
>>>>
>>>> Espero ser claro.
>>>>
>>>> Quedo a la espera de sus opiniones y ayuda. Muchas gracias!
>>>> --
>>>> Gabriel Fernández
>>>> Desrrollador Web
>>>> www.openweb.com.uy
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Python-es mailing list
>>>> Python-es en python.org
>>>> http://mail.python.org/mailman/listinfo/python-es
>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>
>>>>
>>>
>>>
>>> --
>>> Eduardo Matus Coquelet
>>> Ingeniero Civil Informático y Telecomunicaciones.
>>> Celular: 77113825
>>>
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> http://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> http://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
>
> --
> Eduardo Matus Coquelet
> Ingeniero Civil Informático y Telecomunicaciones.
> Celular: 77113825
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>


-- 
Gabriel Fernández
Desrrollador Web
www.openweb.com.uy
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20120628/c6dfc32f/attachment.html>


Más información sobre la lista de distribución Python-es