zoukankan      html  css  js  c++  java
  • Django--模型层

    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查询优化  

        

        

  • 相关阅读:
    我的“.vimrc”配置
    js写的简单购物车2
    js写的简单购物车
    用css3绘制你需要的几何图形
    给父级DIV清除浮动
    HTML中canvas的大小调整
    Python
    Python文本编辑器推荐
    jQuery mobile基础
    Bootstrap网格系统
  • 原文地址:https://www.cnblogs.com/tulintao/p/11553772.html
Copyright © 2011-2022 走看看