2012-11-15 4 views
3

중복 된 쿼리를 필터링 할 때 문제가 있습니다. 내가 포스트 그레스 8.4.13 내 모델 객체에이 쿼리를 사용Django distinct가 작동하지 않습니다.

장고 1.4을 사용하고 내가 어떤 검색어에 대한 결과

term = request.GET.get('term') 
field = request.GET.get('field') 
filter = field + '__' + 'icontains' 
model_results = teilnehmer.objects.filter(**{filter: term}).order_by().distinct() 
results = [ getattr(x, field) for x in model_results ] 
output = simplejson.dumps(results) 

그것은, 좋은 작품주고 (그것은 JQuery와 자동 완성입니다) 모델의 모든 필드. 그러나 모든 단일 히트를 보여줍니다. 그래서 "Smith"라는 이름이 테이블에 10 번 있다면, 그것은 10 번 "Smith"라는 배열을 나에게줍니다. 제안 도구로 작동해야합니다. 나는 뚜렷한 것에 대해 읽었고 그것을 사용하려고 시도했지만 (위와 같음) 작동하지 않습니다.

아이디어가 있으십니까?

미리 감사드립니다. distinct 기능

콘래드

답변

1

패스 필드 이름 : 당신이 QuerySet에 전달하기 전에 GET 값을 확인해야하기 때문에

model_results = teilnehmer.objects.filter(**{filter: term}).order_by().distinct(field) 

은 또한 당신의 접근 방식은 매우 안전하지 않습니다. 아마 장고 양식을 사용합니까?

또한 distinct 기능에 대한 답장을 보내 here

+0

감사를 문서를 참조하십시오. 이제 작동합니다. 지금 GET 유효성 검사를 구현합니다. 장고 양식은 불행히도 여기서는 선택 사항이 아닙니다. 장고 양식으로 많은 작업을 수행하게 될 매우 복잡한 검색 양식이기 때문입니다. 하지만 다시 한 번 감사드립니다! – Conrad

관련 문제