zoukankan      html  css  js  c++  java
  • Djiango orm 补充

    一、元信息

    modle类可以通过元信息类设置索引和排序信息

    方法:在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优化

    # 好处:信息存放在对象中,取值方便
    # 坏处:所有字段都进行查询
    # 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 Count, Sum
    
    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)
    
    res = Uesr.objects.aggregate(names=Concat('name'))
    print(res)

    四、基于jQuery的ajax异步请求

    <script src="jquery.js"></script>
    <script>
        $.ajax({
            url: '请求路径',
            type: 'get|post',
            data: {
                // post请求数据
            },
            success: function(data) {
                // 请求的回调函数
            }
        })
    </script>
  • 相关阅读:
    二叉树同构
    L1-001 Hello World--java
    关于Hanoi的递归分析
    L1-049 天梯赛座位分配
    1001 害死人不偿命的(3n+1)猜想 && 1005 继续(3n+1)猜想
    L1-046 整除光棍
    L1-043 阅览室
    lambda_Consumer接口
    lambda_Supplier接口
    Veu_v-for
  • 原文地址:https://www.cnblogs.com/peng-zhao/p/10511251.html
Copyright © 2011-2022 走看看