2016-10-23 1 views
0

나는 열의 심볼에서 하위 문자열로 searchWord를 가진 모든 객체를 얻으려고합니다.검색어 검색. 첫 번째 결과 대신 결과 목록을 반환하십시오. 접두사 부분 문자열에 의해

searchWord이 G이며, 존재 다섯 재고 객체가 있다면 :

GOOG 
APPL 
FLO.CO 
GARY 
OEGP  

가 그럼 난 GOOGGARY하지만 OEGP를 검색하고 싶습니다가. 그냥 접두사 부분 문자열

아래 코드는 제가 시도한 코드입니다. 하지만 하나의 객체 만 반환합니다.

results = stock.objects.all().filter(symbol=searchWord) 

    for x in results: 
     print(x.symbol) 

답변

2

당신은 QuerySet.filter()startswith를 사용할 수 있습니다. 이 symbol 열의 값에 대한 접두사로 대소 문자를 구분searchWord를 확인합니다

results = stock.objects.all().filter(symbol__startswith=searchWord) 

: 같은 ORM 쿼리해야합니다. 대/소문자를 구분하지 않고 접두사 확인을 수행하려는 경우 대신 istartswith을 사용하십시오.

+1

고마워요! That worked worked : – vandelay

0

어쩌면 목록을 이해할 수 있는지 (해결됨).

results = [r for r in results if r.startswith(searchWord)] 
+0

'searchWord in r'은'r '의 부분 문자열로'searchWord'를 검사 할 것입니다. 더 나은 방법은 'r.starswith (searchWord in r) :'를 사용하여 접두어를 확인하는 것입니다. 또한,'filter()'자체로 부하를 줄일 수있을 때,리스트 comprehension은 필요하지 않습니다. –

+0

정확합니다. 나는 OP가'searchWord'로 시작하는 단어만을 원한다는 것을 보지 못했습니다. 내 기대는 OP가 결국 목록을 원한다는 것입니다. –

+0

이전 의견에 오타를 사용하십시오. 'r.starswith (searchWord)'입니다. 귀하의 의견에 대한 답변으로'1 * 6'에 의해 같은 결과를 얻을 수있을 때'1 + 1 + 1 + 1 + 1 + 1'을하는 이유는 무엇입니까? 희망 당신은 그것을 :) –

관련 문제