2013-02-13 4 views
0

장고에서 사용자를위한 검색 기능을 구현하려고합니다.Django : 장고의 다른 테이블에서 검색

하나의 표 검색에 Q을 사용할 수 있지만 여기서는 다른보기가 있습니다. 나는 categoey 및/또는 태그

에 속한 사용자를 검색 할 그러나 나는이 작업을 수행 할 수있는 방법을 찾을 수 없습니다입니다

Class Profile(models.Model)   
    name = models.OnoeToOneField(User) 
    category = models.ForeignKey(Category) 
    Tags = models.ForeignKey(Tags) 

class Category(models.Model) 
    name = models.Charfield(max_length = 100) 
    sub_cat = models.ForeignKey(SubCategory) 

: 여기

내 모델입니다. Haystack이나 Whoosh를 사용하고 싶지 않습니다.

이 작업을 수행하는 간단한 방법을 제안 해주세요.

+0

: 하위 카테고리 이름

Profile.objects.filter(category__pk=27) 

필터 : 카테고리 ID로

Profile.objects.filter(category__name__iexact='category 1') 

필터 : 카테고리 이름

필터 "이제 이름이 f 인 사용자를 검색하려고합니다. 또는 카테고리와 태그를 포함 할 수 있습니다. " 다시 말하고 자세히 설명해 주시겠습니까? – jpic

+0

청크가 업데이트되었습니다. – masterofdestiny

답변

1

그런 queryset을 사용해 보셨습니까?

User.objects.filter(
    Q(profile__category__name__icontains=search_string) | 
    Q(profile__Tags__name__icontains=search_string) 
).distinct() 

자세한 내용은 complex lookups with Q objects을 참조하십시오.

distinct()을 사용하여 같은 사용자가 두 개의 이유로 (각각 Q 객체에 해당) 선택 될 수 있으므로 중복 된 결과를 제거합니다.

(물론, 예를 들어 넣은대로 Tags__name을 적용해야하지만 태그 모델의 소스가 없습니다.)

+0

감사합니다. 지금 시도해 보겠습니다. 하지만 큰 데이터를위한 좋은 검색 모듈을 제안 해 주시겠습니까? – masterofdestiny

+0

haystack을 사용합니다 :) – jpic

1

그것은 사실 매우 쉽게 :

Profile.objects.filter(category__sub_cat__name__iexact='exact sub category name') 
관련 문제