ORM查2
发布时间:2020-12-15 05:33:12 所属栏目:Java 来源:网络整理
导读:# # 正向查找 对象查找 # book_obj = models.Book.objects.get(id=3) # print(book_obj) # ret = book_obj.publisher.name # print(ret) # # 正向查找 字段查找 # ret = models.Book.objects.filter(id=3).values_list("publisher__name") # print(ret) # #
# # 正向查找 对象查找 # book_obj = models.Book.objects.get(id=3) # print(book_obj) # ret = book_obj.publisher.name # print(ret) # # 正向查找 字段查找 # ret = models.Book.objects.filter(id=3).values_list("publisher__name") # print(ret) # # 反向查找 # publisher_obj = models.Publisher.objects.get(id=1) # ret = publisher_obj.books.all().values_list("title") # print(ret) # # 字段查找 # ret = models.Publisher.objects.filter(id=1).values_list("books__title") # print(ret) # 多对多 # # 查询 author_obj = models.Author.objects.get(id=2) # print(author_obj.name) # ret = author_obj.book.all() # print(ret) # create 创建新对象 1、在book中创建一本新书,在book和author的关联表中添加关联操作 # author_obj.book.create(title="孩子",publisher_id=3) # add 必须添加对象 或 id # book_obj = models.Book.objects.get(id=12) # author_obj.book.add(book_obj) # # add 多个 # book_obj = models.Book.objects.filter(id__gt=5,id__lt=8) # print(book_obj) # author_obj.book.add(*book_obj) # author_obj.book.add(12) # # set 必须要是一个可迭代对象 # author_obj.book.set([8,11]) # author_obj.save() # remove 对象或id # # 对象 # book_obj = models.Book.objects.get(id=7) # author_obj.book.remove(book_obj) # id # author_obj.book.remove(5) # # clear # new_author_obj = models.Author.objects.get(id=5) # new_author_obj.book.clear() # 聚合 from django.db.models import Avg,Sum,Max,Min,Count # ret = models.Book.objects.all().aggregate(price_avg = Avg("price")) # print(ret) # ret = models.Book.objects.all().aggregate(min_price=Min("price")) # print(ret) # ret = models.Book.objects.all().aggregate(price_max=Max("price"),price_min=Min("price"),price_avg=Avg("price"),price_sum=Sum("price")) # print(ret) # 分组查询 # 查询每一本书的作者个数 # ret = models.Book.objects.all().annotate(author_num=Count("author")) # for book in ret: # print("书名:{},数量:{}".format(book.title,book.author_num)) # 查询作者数量大于1的书 # ret = models.Book.objects.all().annotate(author_num=Count("author")).filter(author_num__gt=1) # print(ret) # 查询各个作者出的书的总价格 # ret = models.Author.objects.all().annotate(price_sum=Sum("book__price")).values_list("name","price_sum") # print(ret) # F和Q # 查询出 库存数 大于 卖出数的 所有书(两个字段做比较) from django.db.models import F # ret = models.Book.objects.filter(remain__gt=F("sale")) # print(ret) models.Book.objects.update(sale=(F("sale")+1)*3) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |