Gabriel, si colocás la coma, tenes que tener cuidado, pero si, funciona.<div>Al llamar al filter, debés usar *q, no q solo porque es una tupla.</div><div>Al usar *q, estás pasandole a filter una lista de parámetros a utilizar.</div>
<div><br></div><div>Por ejemplo:</div><div><br></div><div>q = Q(nombre__startswith='Cesar')</div><div># Aquí q es un Q object</div><div><br></div><div>q = q, Q(apellido__endswith='Roldan')</div><div># en este momento q es una tupla</div>
<div><br></div><div># La llamada en este caso deberías hacerla</div><div>Modelo.objects.filter(*q)</div><div><br></div><div>Saludo</div><div><br clear="all"><div>César</div><br>
<br><br><div class="gmail_quote">El 28 de junio de 2012 12:48, gabriel fernandez<span dir="ltr"><<a href="mailto:gabofer82@gmail.com" target="_blank">gabofer82@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
César, si coloco "," (and) tambien los une?<div class="im"><br><br><div>q = None</div><div>for op in opciones:</div><div> if q is None:</div><div> q = Q(Modelo__contains=op)</div><div> else:</div></div><div>
q = q , Q(Modelo__contains=op) <===<br>
</div><br><br><div class="gmail_quote"><div class="im">El 28 de junio de 2012 12:12, César H. Roldán <span dir="ltr"><<a href="mailto:croldan@gmail.com" target="_blank">croldan@gmail.com</a>></span> escribió:<br></div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Con el raw que te indicó Eduardo te debería servir, eso te mapea los objetos y te retorna un queryset.<div><div class="h5"><div><br></div><div>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)</div>
<div><br></div><div>q = None</div><div>for op in opciones:</div><div> if q is None:</div><div> q = Q(Modelo__contains=op)</div><div> else:</div><div> q = q | Q(Modelo__contains=op)</div><div><br></div><div>Saludo</div>
<div><br clear="all"><div>César</div><br><div class="gmail_quote">El 28 de junio de 2012 12:01, gabriel fernandez<span dir="ltr"><<a href="mailto:gabofer82@gmail.com" target="_blank">gabofer82@gmail.com</a>></span> escribió:<div>
<div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Ok, pero yo quiero hacer un queryset, por eso uso Q, porque la consulta<br>evalua muchas opciones, no se si las formas son excluyentes, como seria<br>
raw en una consulta con Q?<br><br><div class="gmail_quote">El 28 de junio de 2012 11:51, Eduardo Matus <span dir="ltr"><<a href="mailto:ematus@gmail.com" target="_blank">ematus@gmail.com</a>></span> escribió:<div><div>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Tambien esta "raw"<div><br></div><div>resultados = Modelo.objects.raw("select * from foo")</div><div>
<br></div><div>lo que hace es que mapea las columnas a los campos del modelo, como si fuera objetos POCO.<div><div><br>
<br><div class="gmail_quote">2012/6/28 Manuel Ignacio Franco Galeano <span dir="ltr"><<a href="mailto:maigfrga@gmail.com" target="_blank">maigfrga@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
tambien esta la opcion de hacer con sql <a href="https://docs.djangoproject.com/en/dev/topics/db/sql/" target="_blank">https://docs.djangoproject.com/en/dev/topics/db/sql/</a><div><br></div><div><br></div><div><br></div>
<div>
<pre><font size="4"><span>def</span> <span>my_custom_sql</span><span>():</span>
<span>from</span> <span>django.db</span> <span>import</span> <span>connection</span><span>,</span> <span>transaction</span>
<span>cursor</span> <span>=</span> <span>connection</span><span>.</span><span>cursor</span><span>()</span>
<span># Data modifying operation - commit required</span>
<span>cursor</span><span>.</span><span>execute</span><span>(</span><span>"UPDATE bar SET foo = 1 WHERE baz = </span><span>%s</span><span>"</span><span>,</span> <span>[</span><span>self</span><span>.</span><span>baz</span><span>])</span>
<span>transaction</span><span>.</span><span>commit_unless_managed</span><span>()</span>
<span># Data retrieval operation - no commit required</span>
<span>cursor</span><span>.</span><span>execute</span><span>(</span><span>"SELECT foo FROM bar WHERE baz = </span><span>%s</span><span>"</span><span>,</span> <span>[</span><span>self</span><span>.</span><span>baz</span><span>])</span>
<span>row</span> <span>=</span> <span>cursor</span><span>.</span><span>fetchone</span><span>()</span>
<span>return</span> <span>row</span></font></pre><pre><span><br></span></pre><pre><span><br></span></pre><pre><span><br></span></pre><pre><span><br></span></pre>
</div><div><br></div><div><br><br><div class="gmail_quote">El 28 de junio de 2012 16:39, Eduardo Matus <span dir="ltr"><<a href="mailto:ematus@gmail.com" target="_blank">ematus@gmail.com</a>></span> escribió:<div><div>
<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
primero que nada, esto no es una "consulta compleja".<div>if seleccion == 'todo':</div><div> qset = ( Q(Modelo__contains='opcion1') | Q(Modelo__contains='opcion2'))<br><br><div class="gmail_quote">
2012/6/28 gabriel fernandez <span dir="ltr"><<a href="mailto:gabofer82@gmail.com" target="_blank">gabofer82@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div>
Hola Lista!!!<br><br>Agradezco a quién me pueda dar una mano!<br><br>El problema es como sigue:<br><br>Tengo una busqueda en la cual uso tres radio button:<br><br>Opcion 1 Opcion 2 Opcion 1-2(Ambas)<br><br>En la vista cuando voy a procesar el formulario tengo algo asi (luego de validar):<br>
<br>seleccion = form.cleaned_data['opciones']<br>qset = (<br> Q(Modelo__contains=seleccion)<br>)<br><br>El problema consiste en como hacer cuando se selecciona la Opcion 1-2 ya que engloba<br>las dos opciones anteriores, hay algo que indique que quiero todo algo tipo:<br>
<br>qset = (<br>
Q(Modelo__contains='todo')<br>
)<br clear="all"><br>Uso el modulo Q para consultas complejas porque en realidad tengo mas de una seleccion <br>como la anterior. Muestro una solamente porque el resto son iguales, y van tambien en la misma<br>tupla de qset.<br>
<br>Espero ser claro.<br><br>Quedo a la espera de sus opiniones y ayuda. Muchas gracias!<span><font color="#888888"><br>-- <br>Gabriel Fernández<br>Desrrollador Web<br><a href="http://www.openweb.com.uy" target="_blank">www.openweb.com.uy</a> <br>
<img><br>
<br>
</font></span><br></div></div>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br>Eduardo Matus Coquelet<br>Ingeniero Civil Informático y Telecomunicaciones.<br>Celular: 77113825<br>
</font></span></div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div></div></div><br></div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Eduardo Matus Coquelet<br>Ingeniero Civil Informático y Telecomunicaciones.<br>Celular: 77113825<br>
</div></div></div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div></div></div><div><div><br><br clear="all"><br>-- <br>Gabriel Fernández<br>Desrrollador Web<br><a href="http://www.openweb.com.uy" target="_blank">www.openweb.com.uy</a> <br>
<img><br>
<br>
</div></div><br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div></div></div><br></div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></div></div></blockquote></div><div class="HOEnZb"><div class="h5"><br><br clear="all"><br>-- <br>Gabriel Fernández<br>Desrrollador Web<br><a href="http://www.openweb.com.uy" target="_blank">www.openweb.com.uy</a> <br>
<img height="39" width="420"><br>
<br>
</div></div><br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div><br></div>