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

Django--模型层

发布时间:2020-12-20 10:39:11 所属栏目:Python 来源:网络整理
导读:13个方法 all() filter() get() reverse() order_by() exclude() values() values_list() count() distinct() exists() first() last() ? 神奇的双下滑操作 查看orm内部sql语句的方法有哪些 1、如果是queryset对象,那么可以点query直接查看该queryset的内部

13个方法

  all()

  filter()

  get()

  reverse()  

  order_by()

  exclude()

  values()

  values_list()

  count()

  distinct()

  exists()

  first()

  last()

?

神奇的双下滑操作

  查看orm内部sql语句的方法有哪些

    1、如果是queryset对象,那么可以点query直接查看该queryset的内部的sql语句

    2、在Django项目的配置文件中,配置一下参数就可以实现所有的orm在查询的时候自动打印对应的sql语句

LOGGING = {
                    version: 1,disable_existing_loggers: False,handlers: {
                        console:{
                            level:DEBUG,class:logging.StreamHandler,},loggers: {
                        django.db.backends: {
                            handlers: [console],propagate: True,level:DEBUG,}
                }

?

    

# 查询价格大于200的书籍
        # res = models.Book.objects.filter(price__gt=200)
        # print(res)
        # 查询价格小于200的书籍
        # res = models.Book.objects.filter(price__lt=200)
        # print(res)

        # 查询价格大于等于200.22的书籍
        # res = models.Book.objects.filter(price__gte=200.22)
        # print(res)
        # 查询价格小于等于200.22的书籍
        # res = models.Book.objects.filter(price__lte=200.22)
        # print(res)


        # 查询价格要么是200,要么是300,要么是666.66
        # res = models.Book.objects.filter(price__in=[200,300,666.66])
        # print(res)
        # 查询价格在200到800之间的
        # res = models.Book.objects.filter(price__range=(200,800))  # 两边都包含
        # print(res)

        # 查询书籍名字中包含p的
        """原生sql语句 模糊匹配
            like 
                %
                _
        """
        # res = models.Book.objects.filter(title__contains=‘p‘)  # 仅仅只能拿小写p
        # res = models.Book.objects.filter(title__icontains=‘p‘)  # 忽略大小写

        # print(res)


        # 查询书籍是以三开头的
        # res = models.Book.objects.filter(title__startswith=‘三‘)
        # res1 = models.Book.objects.filter(title__endswith=‘p‘)
        # print(res)
        # print(res1)
            
        
        # 查询出版日期是2017的年(******)
        res = models.Book.objects.filter(create_time__year=2017)
        print(res)

?

?

?

  多表操作

    一对多(foreignKey)

    一对一(OneToOneField)? 可以用foreignKey来代替)ForeignKey(unique=True)

      一对多和一对一两个关键字创建出来的字段会自动加上_id后缀

    多对多(MangToManyField)

      该字段并不会真正的在表中展示出来,它仅仅只是一个虚拟字段

      1、告诉orm自动创建第三张表

      2、帮助orm跨表查询

    

    一对多字段的跨表查询

    多对多字段的跨表查询

    orm跨表查询

      基于对象的跨表查询

      基于双下划线的查询

    聚合查询

      aggtegate

      from django.db.models import Sum,Max,Min,Avg,Count

?

    分组

      annotate

    F与Q查询

      F查询

      Q查询

            q = Q()
                    q.connector = or  # 修改查询条件的关系   默认是and
                    q.children.append((title__contains,三国演义))  # 往列表中添加筛选条件
                    q.children.append((price__gt,444))  # 往列表中添加筛选条件
                    res = models.Book.objects.filter(q)  # filter支持你直接传q对象  但是默认还是and关系
                    print(res)

?

      ORM常见字段

      ORM事物操作

      ORM查询优化  

(编辑:李大同)

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

    推荐文章
      热点阅读