zoukankan      html  css  js  c++  java
  • django-orm的表操作.

    1)表操作:

    1对1的时候: 反向查表的时候,不需要_set,因为只有一个.

    1对多的时候,反向查表要分情况,当你想查的表是多个时,记得要加上_set,如果反向查的是一个对象的时,就不需要加上_set.

    多对多的时候,反向查表一定要加上_set,因为一定是多个值.

    总结,当你反向查表的时候,如果对象是一个集合,那么就要加上_set,如果不是的话,就不需要.

    2)

    1.查询人民邮电出版社出了多少本书

    >>> Book.objects.filter(publisher__name='人民邮电出版社').count()
    >>> from django.db.models import *
    >>> Book.objects.filter(publisher__name='人民邮电出版社').aggregate(Count('title'))

    2.查询陈吉出的书总价是多少

    >>> Book.objects.filter(authors__name='陈吉').aggregate(Sum('price'))

    3.查询各个作者出的书的总价格是多少

    >>> Book.objects.values('authors__name').annotate(Sum('price'))

    4.查询各个出版社最便宜的书价是多少

    >>> Book.objects.values('publisher__name').annotate(Min('price'))

    1.annotate(*args,**kwargs):可以为QuerySet中的每个对象添加注解。可以通过计算查询结果中的每个对象所关联的对象集合,从而得出总计值(也可以是平均值或总和,等等)。

    用于分组查询。

    2.aggregate(*args,**kwargs):通过对QuerySet进行计算,返回一个聚合值的字典,aggregate()中每个参数都可以指定一个包含在字典中的返回值。

    用于聚合查询

    所在位置:django.db.models

    1.Avg:返回所给字段的平均值

    2.Count:根据所给关联字段返回被关联model的数量。

    3.Max:返回所给字段的最大值

    4.Min:返回所给字段的最小值

    5.Sum:计算所给字段值的总和

  • 相关阅读:
    SQL Server中的Merge关键字
    详解公用表表达式(CTE)
    SQL Server优化50法
    Chrome下的脚本管理器
    初步设计了一下视频工具合集的界面
    迅雷的剪贴板冲突好强大
    在C#中用MediaInfo获取视频或音频的属性
    用Command模式简单的实现Undo&Redo功能
    用DoddleReport快速生成报表
    移动支付时代早日来临吧
  • 原文地址:https://www.cnblogs.com/52forjie/p/7789313.html
Copyright © 2011-2022 走看看