一般的なフィルタ操作
:以上、より大きい
>より大きい__gt
__gte以上> =
Student.objects.filter(age__gt = 10)//クエリより古い10歳の学生
Student.objects.filter(age__gte = 10)//クエリよりも古いまたは10歳の学生に等しい
:特別な注意ここで下線二重下線で、また、二重下線の導入以下の通りです。
:以下、未満
<未満__lt
より__lte以下<=
10歳未満のStudent.objects.filter(age__lt = 10)//クエリの学生
Student.objects.filter(age__lte = 10)//クエリ歳未満または10歳の学生と同じ
ように:
__exact「AAA」のような正確に等しくは
正確に等しいiLikeの「AAA」の場合を無視__iexact
__containsが「%% AAA」のような含む
、__icontainsにiLikeの「%AAA%」が、SQLiteのために、それに含まれる効果と同等の場合を無視しますicontains。
中:
__in
クエリ高齢学生の範囲
Student.objects.filter(age__in = [10、20、30])は、
/ nullであるNULLでありません。
__isnull宣告空
Student.objects.filter(name__isnull = TRUE)//ユーザー名を照会し、ブランク学生さ
Student.objects.filter(偽= name__isnull)//ユーザー名が学生の空でない照会
/に含まれていないに等しいではありません。
Student.objects.filter()。Excute(年齢= 10)// 10歳を照会の学生ではありません
(Student.objects.filter)。Excute(age__in = [10、20])// クエリが[10、20歳ではありません]学生
の他の一般的なファジークエリ:
...そもそも__startswith
...場合無視することを始め__istartswith
に...エンド__endswith
ケース無視し、...エンディング__iendswithを
内...範囲__rangeを
__year年日付フィールド
__month月日付フィールド
の日__day日付フィールド
マルチテーブル、クエリに参加します:
クラス(models.Model):
名前= models.CharField(U '名称')
、クラスB(models.Model):
AA = models.ForeignKey(A)
B.objects.filter(aa__name__containsの= 'searchtitle')クエリ#1 B表AAテーブルBに対応するテーブル内の外部キー列は、オブジェクトsearchtitleの名前を含んでいます。
クエリAPI
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<
1
>
all
(): 查询所有结果
<
2
>
filter
(
*
*
kwargs): 它包含了与所给筛选条件相匹配的对象
<
3
> get(
*
*
kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,
如果符合筛选条件的对象超过一个或者没有都会抛出错误。
<
4
> exclude(
*
*
kwargs): 它包含了与所给筛选条件不匹配的对象
<
5
> order_by(
*
field): 对查询结果排序
<
6
> reverse(): 对查询结果反向排序
<
8
> count(): 返回数据库中匹配查询(QuerySet)的对象数量。
<
9
> first(): 返回第一条记录
<
10
> last(): 返回最后一条记录
<
11
> exists(): 如果QuerySet包含数据,就返回
True
,否则返回
False
<
12
> values(
*
field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列
model的实例化对象,而是一个可迭代的字典序列
<
13
> values_list(
*
field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
<
14
> distinct(): 从返回结果中剔除重复纪录
|