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)
2.related_name、related_query_name
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
5.2where
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初级