-2
>>> Entry.objects.filter(
...     headline__startswith='What'
... ).exclude(
...     pub_date__gte=datetime.now()
... ).filter(
...     pub_date__gte=datetime(2005, 1, 1)
... )

「これは、データベース内のすべてのエントリの最初の QuerySet を取得し、フィルタ、除外、別のフィルタを追加します。最終結果は、1 月 1 日の間に公開された、見出しが「What」で始まるすべてのエントリを含む QuerySet です。 、2005 年、そして現在」。

この文脈で__と単語gteが何をしているのか誰かが説明できますか. datetime.now を除外しているため、上記のクエリが 2005 年 1 月 1 日から当日までの範囲を抽出する方法を視覚化できません。二重下線と gte に関して私が見逃しているものに関連していると確信しています。ありがとう。

4

1 に答える 1

7

__gtejust は「以上」演算子を意味します。これはWHERE句を作成するための特別な構文です。、、など__gt、他にもあります。ドキュメントの詳細情報を参照してください。__lt__lte__startswith

exclude()docsfilterからの引用のちょうど反対です:

filter(**kwargs)

指定されたルックアップ パラメータに一致するオブジェクトを含む新しい QuerySet を返します。

exclude(**kwargs)

指定されたルックアップ パラメータに一致しないオブジェクトを含む新しい QuerySet を返します。

したがって、提供したコードは実際には次のように言っています。

すべてのエントリを教えてください。

  • headlineで始まりWhat
  • pub_date現在の日付以降ではなく、
  • pub_dateより大きいか等しい1/1/2005

以下も参照してください。

于 2013-09-09T21:10:24.660 に答える