加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读