标签:last 查询 列表 关系 book icon reg pytho publish
对象和关系型数据库的映射
为什么要用ORM
1. 返回对象列表的
all() Book.objects.all()
filter()
exclude()
order_by()
reverse()
distinct()
values() {}
values_list() ()
2. 获取对象的
get()
first()
last()
3. 返回数字
count()
4. 返回布尔值
exists()
id__gt
id__lt
id__lte
id__gte
id__in=[]
id__range=[1,4]
contains= ‘‘
icontains= ‘‘
startswith = ‘‘
istartswith = ‘‘
endswith = ‘‘
iendswith = ‘‘
isnull = True
__year
author_obj.books --》管理对象
author_obj.books.add()
author_obj.books.remove()
author_obj.books.clear()
author_obj.books.set() []
author_obj.books.create()
book_obj.authors --》管理对象
Book.objects.all().aggregate(AVG("price")) #查书的平均价格
Book.objects.aggregate(Avg(‘price‘), Max(‘price‘), Min(‘price‘))
Employee.objects.values("dep").annotate(avg=AVG("salary"))
筛选出部门 annoteta是按前面的内容分组
# 查询每一个作者的名字以及出版书籍的最高价格
Author.objects.annotate(max_price=Max("book__price")).values("name","max_price")
# 查询96年以后出生的每一个作者的名字以及出版书籍的最高价格
Author.objects.filter(birthday__year__gt=1996).annotate(max_price=Max("book__price")).values("name","max_price")
# 查询不止一个作者的书籍名称以及关联的作者个数
Book.objects.all().annotate(c=Count("authors")).filter(c__gt=1).values("title","c")
# 查询部门1的每一个销售的名字以及今天对应的成单量
Userinfo.objects.filter(depart_id=1).filter(customer__deal_date=now).annotate(c=Count("customers")).values("name","c")
统计每一本书的作者个数
ret=Book.objects.annotate(authorsNum=Count(‘authors__name‘))
Book.objects.filter(commnetNum__lt=F(‘keepNum‘)) #查评论数小于keepNum的
Book.objects.all().update(price=F("price")+30) #所有书的价格加30
用|分割不同的Q查询条件,
查询作者名称是max或ding的书
bookList=Book.objects.filter(Q(authors__name="max")|Q(authors__name="ding"))
Q 对象可以使用~ 操作符取反,这允许组合正常的查询和取反(NOT) 查询
bookList=Book.objects.filter(Q(authors__name="yuan") & ~Q(publishDate__year=2017)).values_list("title")
Q 对象,它必须位于所有关键字参数的前面。
Book.objects.filter(Q(publishDate__year=2016) | Q(publishDate__year=2017),title__icontains="python")
1. 基于对象查询 对应sql的子查询
正向: book_obj.authors.all()
反向:author_obj.book_set.all()
2. 基于双下划线查询 对应sql的join连表查询
正向: Book.objects.filter(title="python").values("publish__name") #查python的出版社名称
反向: Author.objects.filter(name__startswith="a").values("book__title") #查姓名是a开头的作者有哪些书
标签:last 查询 列表 关系 book icon reg pytho publish
原文地址:https://www.cnblogs.com/yunfengding/p/10506714.html