2009-05-18 14 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クエリAPIは従来の比較演算子を使用していません。 (field)__(operatorname)=(value)スタイル構文を使用します。

あなたのクエリは次のようになります。

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

参照DjangoのドキュメントMaking Queries

3

にあなたはまたthe *__range lookupを使用することができます。

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

は注意して、範囲のルックアップは、 '包括的' であり、そうします範囲の境界を適合させなければならない。上記のように該当する場合、これはImranによって投稿されたものと非常に同じリストになるはずです。レンジルックアップは日付でも動作します。

関連する問題