2010-01-06 4 views
3

이 어떻게 이런 일을 할 수 요청합니다.장고 동적 수는

+0

관심 분야 중; 'Product.objects.all()'은 모든 제품을 검색합니다. 'products_list.filter (name__icontains = q)'는 쿼리를 만족하는 제품만을 걸러 내고 반환합니다. 장고로 필터링 된 쿼리를 수행하고 DB에서 모든 제품을 메모리로 가져온 다음 조건을 지정하는 쿼리 대신 필터링하는 것입니다 필요한 데이터? 그냥 질문입니다. – n002213f

+0

사실, 당신은'product = Product.objects.SOMETHING'을 할 수없고 제품을 재사용하여 계속 사용하지 못하게 될 것입니다. – Natim

답변

2

여러 AND 문을 사용하여 목록을 필터링하고 OR 문을 원합니다. 이런 식으로 뭔가를 시도 :

from django.db.models import Q 
products_list = Product.objects.all() 
orq = None  
for key in keywords: 
    thisq = Q(name__icontains=q) 
    if orq: 
     orq = thisq | orq 
    else: 
     orq = thisq 
products_list = products_list.filter(orq) 

당신은 아마 위의 코드를 정리할 수 있지만, 아이디어는 기본적으로 Q(name__icontains='prod1') | Q(name__icontains='prod2')입니다 orq라는 변수를 만드는 것입니다.

+0

사실 이것은'products_list = Product.objects.all()'과'products_list = products_list.filter (orq)'는 작동하지 않지만'products_list = Product.objects.filter (orq)'를 직접 할 수 있습니다. 완벽하게 :) – Natim

+0

btw, 만약 내가 바꿀 수있을 것 같아. & 대신 OR 대신 OR을 사용할 수 있습니다. – Natim

+0

그것이 효과가있어 기쁩니다. 프로젝트에 행운을 비네. – Gattster