django orm查询

https://blog.****.net/weixin_40744265/article/details/88316555

https://www.cnblogs.com/liwenzhou/p/8660826.html

1.

 User.objects.filter(id__in=[1,2,5])

models.Tb1.objects.filter(id__lt=10, id__gt=1)   # 获取id大于1 且 小于10的值

models.Tb1.objects.filter(id__range=[1, 3])      # id范围是1到3的,等价于SQL的bettwen and
 
类似的还有:startswith,istartswith, endswith, iendswith 

date字段还可以:
models.Class.objects.filter(first_day__year=2017)

 

django orm查询

2.related_name、related_query_name

django orm查询

django orm查询

3.select_related、prefetch_related

建立外键时,提高连表操作效率(需在建立model时,设置)

https://www.cnblogs.com/tuifeideyouran/p/4232028.html

4.only、defer

1.支取表中id/name/age列,通过此方法查询的结果还是queryset,并且queryset内部为对象

models.User.objects.all().only("id", "name", "age")

2. 不取表中的name列

models.User.objects.all().defer("name")

5.extra

5.1select 

 tt = Book.objects.all().extra(
        select={"n":"select count(1) from blog_book"},
    )
    for t in tt:
        print(t.title,t.n)

#python初级 3
#php 3
#c++ 3
tt = Book.objects.all().extra(
        select={"n":"select count(1) from blog_book where id < %s"},
        select_params=[3]
    )
    for t in tt:
        print(t.title,t.n)
#
python初级 2
php 2
c++ 2

django orm查询

django orm查询

5.2where

django orm查询

5.3 order_by

tt = Book.objects.all().extra(
        where=["id=1 or id = 2",],
        order_by=["-id"]
    )

    for t in tt:
        print(t.title)
#
php
python初级