zoukankan      html  css  js  c++  java
  • Django 10 模型层 model 元信息,对象优化查询,自定义group_concat,基于jq的ajex异步请求

    一、元信息

    '''
    1. 元信息
    1. Model类可以通过元信息类设置索引和排序信息
    2. 元信息是在Model类中定义一个Meta子类
    
    class Meta:
        # 自定义表名
        db_table = 'table_name'
        # 联合索引
        index_together = ('tag1', 'tag2')
        # 联合唯一索引
        unique_together = ('tag3', 'tag4')
        # 排序字段
        ordering = 'ordering_tag'
        # /admin/中显示的表名称
        verbose_name = 'table_name'
    '''
    

    二.基于对象查询的sql优化

    '''
    1. 语法:only('tag_name1', ..., 'tag_name2') | defer('tag_name1', ..., 'tag_name2')
    2. 属于QuerySet的方法用.调用
    3. 用来优化面向对象查询的sql
    4. only代表哪些字段参与查询,defer表示哪些字段不参与查询
    
    # 好处:信息存放在对象中,取值方便
    # 坏处:所有字段都进行查询
    # uq1 = Uesr.objects.all()
    # print(uq1)
    # print(uq1.query)
    
    # only: 只取规定的字段形成对象(查主键)
    # uq11 = Uesr.objects.all().only('name', 'age')
    # print(uq11)
    # print(uq11.query)
    # print(uq11.first().name)
    # print(uq11.first().gender)  # 自己又重新执行了查询该字段的sql
    
    # defer:只取规定的字段外的字段形成对象(查主键)
    # uq12 = Uesr.objects.all().defer('name', 'age')
    # print(uq12)
    # print(uq12.query)
    
    # 好处:只对所需字段进行查询
    # 坏处:数据放在字典中,相比对象取值不是那么方便
    # uq2 = Uesr.objects.values('name', 'age')
    # print(uq2)
    # print(uq2.query)
    '''
    

    三.自定义:Group_Concat()聚合函数

    from django.db.models import Aggregate, CharField
    class Concat(Aggregate):
        function = 'GROUP_CONCAT'
        template = '%(function)s(%(distinct)s%(expressions)s)'
    
        def __init__(self, expression, distinct=False, **extra):
            super(Concat, self).__init__(
                expression,
                distinct='DISTINCT ' if distinct else '',
                output_field=CharField(),
                **extra)
    

    四.基于jQuery的ajax异步请求

    <script src="jquery.js"></script>
    <script>
        $.ajax({
            url: '请求路径',
            type: 'get|post',
            data: {
                // post请求数据
            },
            success: function(data) {
                // 请求的回调函数
            }
        })
    </script>
    
  • 相关阅读:
    TCP/IP 网路基础
    三、Django之请求与响应-Part 1
    二、Django快速安装
    Linux 优化详解
    缓存的正确使用方式
    HTML从入门到放弃
    Ansible开发之路
    程序猿数据库学习指南
    MySQL错误代码大全
    Python之网络编程
  • 原文地址:https://www.cnblogs.com/liubinliuliu/p/10638192.html
Copyright © 2011-2022 走看看