2009-11-19 6 views
4

price=14.99rating=18을 검색하려는 dvd 테이블이 있다고 가정 해보십시오. 우리는 할 수있는 : Dict를 통해 Objects.filter에 추가 매개 변수 추가?

#Making some dictionary 
dict1 = {} 

#Adding some stuff 
dict1['price']=14.99 
dict1['rating']18 

#Use dict as filter 
dvd.objects.filter(**dict1) 

같이 추가 매개 변수에 추가하는 방법이 있나요 : 난 그냥 현재 그들이 선택할 수 있기 때문에 사용자에 대한 좀 더 유연성을 추가 할

dvd.objects.filter(title__icontains='the') 

무엇 필드를 검색하고 정확히 무엇을 원하는지 지정해야합니다. 그러나 부분 일치를 검색하고 싶습니다. __icontains과 같습니다. 나는 또한 __gt, __lt을 원합니다.

이것이 가능합니까?

답변

3

뭘 원하나요? 처음에 dvd.objects.filter(**dict1) 뒤에 추가 필드를 필터링 하시겠습니까 ?? 그렇다면, 당신은 간단하게 할 수 있습니다 : 당신은 당신이 원하는 작업을 수행 할 수 있도록

qs = dvd.objects.filter(**dict1) 
qs.filter(title__icontains='the') 

기억 filter가의 검색어를 반환, 당신이 dvd.objects에서와 같이. 당신이 무엇을 의미하는지

경우, 당신은 단순히 price__icontains 대신 pricedict1에 키를 할당 할 수 있습니다, 당신은 dict 뭔가에 icontains를 추가하고 싶었습니다.

7

대신에 :

dict['price'] = 14.99 

이 같은 것을 할 수 있습니다 : 당신이 사용하는 경우

dict['price__gte'] = 10 
dict['price__lte'] = 15 

를 ** 다음은 동일 kwargs로 :

Model.objects.filter(price__gte=10, price__lte=15) 
# or 
kwargs = {'price__gte': 10, 
      'price__lte': 15}  
Model.objects.filter(**kwargs) 
관련 문제