2011-01-28 2 views

答えて

60
reduce(operator.and_, (Q(first_name__contains=x) for x in ['x', 'y', 'z'])) 
+2

のおかげだろう。私はまだこれを使用する方法がわかりません... – neolaser

+9

'User.objects.filter(reduce(...))'彼は 'User.objects.filter(Q(first_name__contains = 'x')&Q( first_name__contains = 'y')&Q(first_name__contains = 'z')) ' –

+0

大丈夫です!おかげでIgnacioとYuji – neolaser

18
import operator 
from django.db.models import Q 

q = ['x', 'y', 'z'] 
query = reduce(operator.and_, (Q(first_name__contains = item) for item in ['x', 'y', 'z'])) 
result = User.objects.filter(query) 
+3

Hey :)。ようこそ。あなたの答えに少しの肉を加えたいと思いますか?私たちは通常、答えのための単純なコードダンプよりも少しだけ多くの情報を提供したいと思っています。ありがとう^^ – Patrice

+10

@Patrice 339K担当者が選んだ答えに同じコメントをつけるかもしれない。この答えには、少なくとももっと文脈があります。 :) – bozdoz

+0

Python 3を使用している場合は、 'functools'を使用し、' functools.reduce'を使用してください。 [this](https://stackoverflow.com/a/10226421/1526703)を参照してください。 – Anupam