Gabriel, si colocás la coma, tenes que tener cuidado, pero si, funciona. Al llamar al filter, debés usar *q, no q solo porque es una tupla. Al usar *q, estás pasandole a filter una lista de parámetros a utilizar.
Por ejemplo: q = Q(nombre__startswith='Cesar') # Aquí q es un Q object q = q, Q(apellido__endswith='Roldan') # en este momento q es una tupla # La llamada en este caso deberías hacerla Modelo.objects.filter(*q) Saludo César El 28 de junio de 2012 12:48, gabriel fernandez<[email protected]>escribió: > César, si coloco "," (and) tambien los une? > > > q = None > for op in opciones: > if q is None: > q = Q(Modelo__contains=op) > else: > q = q , Q(Modelo__contains=op) <=== > > > El 28 de junio de 2012 12:12, César H. Roldán <[email protected]>escribió: > >> Con el raw que te indicó Eduardo te debería servir, eso te mapea los >> objetos y te retorna un queryset. >> >> Ahora, lo mejor, me parece es que en lugar de dar opciones con radio, >> pongas checkbox, eso te puede retornar una lista de valores para un campo, >> y con eso simplemente haces un for y vas armando objetos Q, los cuales los >> unís con | (or) >> >> q = None >> for op in opciones: >> if q is None: >> q = Q(Modelo__contains=op) >> else: >> q = q | Q(Modelo__contains=op) >> >> Saludo >> >> César >> >> El 28 de junio de 2012 12:01, gabriel fernandez<[email protected]>escribió: >> >> 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 <[email protected]> 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 <[email protected]> >>>> >>>>> 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 <[email protected]>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 <[email protected]> >>>>>> >>>>>>> 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 >>>>>>> [email protected] >>>>>>> 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 >>>>>> [email protected] >>>>>> http://mail.python.org/mailman/listinfo/python-es >>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> Python-es mailing list >>>>> [email protected] >>>>> 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 >>>> [email protected] >>>> http://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>>> >>> >>> >>> -- >>> Gabriel Fernández >>> Desrrollador Web >>> www.openweb.com.uy >>> >>> >>> >>> _______________________________________________ >>> Python-es mailing list >>> [email protected] >>> http://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> _______________________________________________ >> Python-es mailing list >> [email protected] >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > Gabriel Fernández > Desrrollador Web > www.openweb.com.uy > > > > _______________________________________________ > Python-es mailing list > [email protected] > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > >
_______________________________________________ Python-es mailing list [email protected] http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
