from django.db.models import Q
import operator

qs = SomeModel.objects.all()

# use reduce
rules = []
for rule_key, rule_value in calculated_rules:
    rules.append(Q(rule_key=rule_value))

if rules:
    qs = qs.filter(reduce(operator.or_, rules))

# not use it
q_collect = None
for rule_key, rule_value in calculated_rules:
    new_q = Q(rule_key=rule_value)
    if q_collect is None:
        q_collect = new_q
    else:
        q_collect = q_collect | new_q

if rules:
    qs = qs.filter(q_collect)

вторник, 6 апреля 2010 г., 9:10:08 UTC+4 пользователь Daniel написал:
>
> Hi, I think that this must be super easy, but I'm kind of stumped.
>
> I have a list qObjects = [qObject1, qObject2, qObject3]
> What I'd like is to form this query:  Sample.objects.filter(qObject1,
> qObject2, qObject3)
>
> How would I accomplish what I need?  Thanks!
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/80a976f7-6591-4ed8-9cb8-399f986d41df%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to