2009-05-18 5 views
1

클래스 상태 (models.Model) : someid = models.IntegerField() 값 = models.IntegerField() 의 Status_msg = models.CharField (MAX_LENGTH = 2000)장고에 필터를 사용하는 방법

so my database look like: 
20  1234567890 'some mdg' 
20  4597434534 'some msg2' 
20  3453945934 'sdfgsdf' 
10  4503485344 'ddfgg' 

그래서 값을 가져와야하고 일부 값 사이에주는 someid가 있어야합니다. 그래서 나의 최종 결과는이를 구현하는 방법 ID = 20 2 항목의 포함 목록이어야합니다

val1 = '1234567890' 
    val2 = '4414544544' 

을 가정 해 봅시다.

은 내가 잘못

list = Status.objects.filter(someid = 20, value < val2, value > val1) 

를 사용하여 시도? 이 문제를 해결하는 방법은 입니다.

감사합니다.

+0

죄송합니다. 문제를 해결했습니다. list = Status.objects.filter (someid = 20, value__lt = val2) .filter (value__gt = val1) – user102724

답변

10

Django Query API는 전통적인 비교 연산자를 사용하지 않습니다. (필드) __ (연산자 이름) = (값) 스타일 구문을 사용합니다.

질문은 다음과 같습니다 Making Queries

3

list = Status.objects.filter(someid=20, value__lt=val2, value__gt=val1) 

참조 장고 문서 또한 the *__range lookup 사용할 수 있습니다

list = Status.objects.filter(someid=20, value__range=(val1+1, val2-1)) 

는주의, 범위 조회는, 그래서 '포함'입니다 범위 경계를 조정해야한다. 상기와 같이 적용될 경우, Imran이 게시 한 것과 동일한 목록이 작성되어야합니다. 범위 조회는 날짜와도 작동합니다.

관련 문제