2009-05-18 2 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 между некоторыми значениями. так скажем

val1 = '1234567890' 
    val2 = '4414544544' 

поэтому мой конечный результат должен быть список, содержащий 2 входа для ид = 20 , как реализовать это.

я попытался с помощью

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 не использует традиционные операторы сравнения. Он использует (field) __ (operatorname) = (значение) синтаксис стиля.

Ваш запрос будет:

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

См Джанго Docs на Making Queries

3

Вы также можете использовать the *__range lookup:

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

Будьте в курсе, диапазон поиски являются 'включено', так что вы должны адаптировать границы границ. Если это применимо, как указано выше, это должно привести к тому же списку, который опубликовал Imran. Поиск диапазона также работает с датами.

Смежные вопросы