1

class Status(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'

したがって、私の最終結果は、id = 20 の 2 つのエントリを含むリストであり、これを実装する方法です。

使ってみた

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

どれが間違っていますか?これを修正する方法。

ありがとう。

4

2 に答える 2

10

Django クエリ API は、従来の比較演算子を使用しません。(field)__(operatorname)=(value) スタイルの構文を使用します。

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

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

クエリの作成に関する Django のドキュメントを参照してください

于 2009-05-18T06:17:54.457 に答える
3

*__rangeルックアップを使用することもできます。

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

範囲ルックアップは「包括的」であるため、範囲境界を調整する必要があることに注意してください。上記のように該当する場合、これはImranによって投稿されたものとまったく同じリストになるはずです。範囲ルックアップは日付でも機能します。

于 2009-05-18T09:28:23.327 に答える