django model条件フィルタリングquerysete.filter(**condtions)使い方の詳細


1、下記コード照会モデル対応データベースの日付は2018-05-22のデータに等しい。

queryset = model.objects.all() 
condtions: {'date': '2018-05-22'}
query_res = queryset.filter(**condtions)
2、下記コード照会モデル対応データベースの日付が2018-05-22より小さいデータ:

queryset = model.objects.all() 
condtions: {'date__lt': '2018-05-22'}
query_res = queryset.filter(**condtions)
3.まとめ:条件がquerySetを選ぶ時、filterは=、excludeは表します!=。
querySet.distinctを繰り返します。
同前exactの正確さはlike'aa'に等しい。
同前iexactが正確であることは、大きさを無視して書いてもいいです。aaa'
同前containsはlike'%aa%を含む。
同前icontainsは大小を無視してilike'%aaaa%を書くことを含んでいますが、sqliteにとってcontainsの作用効果はicontainsに等しいです。
同前gtが大きい
同前gteが等しい
同前ltが小さい
同前lte以下イコール
同前inは1つのリストの範囲内に存在する。
同前スターツwithは…で始まる
同前istarts with...先頭で大文字と小文字を無視します。
同前endswithは…で終わる
同前iendwithは…で終わって、大きさを無視して書きます。
同前レンゲは…の範囲内にある。
同前year日付フィールドの年
同前日付フィールドの月
同前day日付フィールドの日
同前isnull=True/False
パラメータが辞書なら、
condtions:{date_}lt':'2018-05-22','status':'未支給',name_exact':'yangxia'
Entry.objects.filter(**condtions)はEntry.objects.filterに相当します。lt='2018-05-22',status='未払い'は、name_exact='yangxia'
sql文に訳せば
select*from Entry.objects where date<='2018-05-22'and status='未払い'and name like'yangxia'
filterの例:

>> q1 = Entry.objects.filter(headline__startswith="What")
>> q2= q1.filter(pub_date__gte=datetime.date.today())
>>> q3= q.filter(pub_date__lte=datetime.date.today())
exclude例:
>>q 1=q.exclude(body_)text_u u.icontains=「food」)
>>q 2=q 1.exclude(pub_)date_gte=datetime.date.today()
知識を補充します:どのようにdjangoのobjects.filter()の方法を使って複数のキーワードに合いますか?
紹介:
今日はdjangoを使う時に、どのように複数のキーワードにマッチする操作をしたいですか?djangoにはobject.filter()の方法があると知っています。次のコードでデータベースの中のtitleにマッチするkeyキーワードの文章名を実現できます。
テーブル.objects.filtercontains=key)
問題:
しかし、私の需要はキーワードにマッチする文章だけではなく、複数のキーワードの文章が必要です。djangoのobject.filter()はどうやって使うべきですか?
テーブル.objects.filtercontains=key 1)+.objects.filtercontains=key 2)+…
解決:
正常なsql文の中で複数のキーワードにマッチするtitleが必要なら、このようにしてもいいです。
select title from data where title regexp'key 1|key 2'
select title from data where title like'%key 1%or like'%key 2%
以上の2つのsql文は、key 1とkey 2が存在するtitle属性のすべての文章を選択したものです。djangoは、複数のキーワードにマッチする方法があるのではないですか?もちろんあります。下のコードです。
from django.db.models import Q
table.object.filter(Q)starts with='key 1')|Qstarts with='key 2')
djangoのQメソッドを導入して、filterに対応するマッチングを追加すればいいです。
以上のdjango model条件フィルタリングquerysete.filterの使い方の詳細は、小編集が皆さんに提供したすべての内容です。参考にしていただければと思います。どうぞよろしくお願いします。