2010-11-28 4 views
21

나는 여러 가지 다른 WHERE 매개 변수가있을 수 있지만 장고 쿼리를 수행하려고합니다.Django 필터 쿼리에 대한 인수로 문자열 사용

다음
querystring = "subcat__id__in=[1,3,5]" 
Listing.objects.filter(querystring) 

리스팅 나의 모델에 정의되며, 그것은 대다 필드 "subcat"를 포함 : 그래서 내가 좋아하는 일을 생각했다. 그러나 필터는 문자열을 인수로 허용하지 않으므로 ValueError를 발생시킵니다. 파이썬에서 문자열이 단지 문자열이 아닌 내용으로 평가되는 방법이 있습니까? 표준 출력보다는 문자열의 값을 인 쇄하는 print 문과 같은 것입니다. 그런데

, 난 그냥

querystring = [1,3,5] 
Listing.objects.filter(subcat__id__in=querystring) 

을하지 않는 이유는 내가 항상 때로는 하나 개 또는 여러 다른 매개 변수의, subcat__id에 대한 필터링 아니에요, 나는 오히려하지 것이다 if 문으로 제어되는 일련의 개별 쿼리를 작성하십시오. 어떤 조언을 많이 주시면 감사하겠습니다. 아마도

답변

52

...

filter_dict = {'subcat__id__in': [1,3,5]} 
Listing.objects.filter(**filter_dict) 
+0

완벽, 그게 내가 찾던 정확히! 고마워. – danny

+0

@danny 대답을 수락 했습니까? = P –

9
Listing.objects.filter(**{"subcat__id__in": ast.literal_eval("[1,3,5]")})