Funciones de agregación y clasificación de Django, consultas asociadas

Los datos y campos presentados a continuación se crean y se agregan en este artículo https://blog.csdn.net/weixin_44685869/article/details/105368727

Función agregada

Use el filtro agregate () para llamar a la función agregada. Las funciones de agregación incluyen: Promedio promedio, Número de conteo, Máximo máximo, Mínimo mínimo, Suma de suma, y ​​se definen en django.db.models.

  • Ejemplo: Consulta la lectura total de libros.

    from django.db.models import Sum
    BookInfo.objects.aggregate(Sum('readcount'))
    
    {'readcount__sum': 126}
    

注意aggregate的返回值是一个字典类型,格式如下:

{'属性名__聚合类小写':}

如: {'readcount__sum': 126}

El filtro agregado () generalmente no se usa cuando se usa el conteo.

  • Ejemplo: Consulta el número total de libros.

    BookInfo.objects.count()
    

Tenga en cuenta que el valor de retorno de la función de conteo es un número.

2. Ordenar

Use order_by para ordenar los resultados

# 默认升序

BookInfo.objects.all().order_by('readcount')

<QuerySet [<BookInfo: 射雕英雄传>, <BookInfo: 笑傲江湖>, <BookInfo: 天龙八部>, <BookInfo: 雪山飞狐>]>
# 降序

BookInfo.objects.all().order_by('-readcount')
<QuerySet [<BookInfo: 雪山飞狐>, <BookInfo: 天龙八部>, <BookInfo: 笑傲江湖>, <BookInfo: 射雕英雄传>]>



Consulta relacionada

Consulta la información de todos los personajes del libro 1
Consulta la información de los libros del personaje 1

  • Sintaxis de acceso uno a muchos:

    Un objeto de clase de modelo correspondiente Múltiples nombres de clase de modelo correspondientes son minúsculas _set Ejemplo:

    book = BookInfo.objects.get(id=1)
    book.peopleinfo_set.all()
    
    <QuerySet [<PeopleInfo: 郭靖>, <PeopleInfo: 黄蓉>, <PeopleInfo: 黄药师>, <PeopleInfo: 欧阳锋>, <PeopleInfo: 梅超风>]>
    
  • Sintaxis de acceso de muchos a uno:

    Objetos de clase de modelo de correspondencia múltiple Ejemplos de nombres de atributos de clase de relación en clases de modelo de correspondencia múltiple:

    person = PeopleInfo.objects.get(id=1)
    person.book
    
    <BookInfo: 射雕英雄传>
    

Acceda a la sintaxis de identificación de un objeto relacionado de clase de modelo correspondiente:

Múltiples objetos de clase modelo correspondientes.

  • Ejemplo:

    person = PeopleInfo.objects.get(id=1)
    person.book_id
    
    1
    

Consulta de filtrado de asociación

Consultar los datos de un modelo por múltiples condiciones de modelo:

La sintaxis es la siguiente:

Nombre de clase de modelo asociado minúscula __ nombre de atributo __ operador condicional = valor

注意:如果没有"__运算符"部分,表示等于。

Los libros de consulta, requieren que el personaje del libro sea "Guo Jing" Los
libros de consulta, requieren que la descripción de los personajes en el libro contenga "ocho"

  • Ejemplo: para consultar un libro y pedirle al personaje del libro que sea "Guo Jing"

    book = BookInfo.objects.filter(peopleinfo__name='郭靖')
    book
    
    <QuerySet [<BookInfo: 射雕英雄传>]>
    
  • Consultar libros, requiere que la descripción de los personajes del libro contenga "ocho"

    book = BookInfo.objects.filter(peopleinfo__description__contains='八')
    book
    
    <QuerySet [<BookInfo: 射雕英雄传>, <BookInfo: 天龙八部>]>
    
Los datos de varios modelos se consultan por una condición de clase de modelo:

La sintaxis es la siguiente:

Un nombre de atributo asociado a clase de modelo __ un nombre de atributo de clase de modelo __ operador condicional = valor

注意:如果没有"__运算符"部分,表示等于。

Consulta todos los personajes llamados "Tianlong Babu"
Consulta todos los personajes cuya lectura de libros es mayor que 30

  • Ejemplo: Consulta todos los personajes del libro titulado "Tianlong Babu".

    people = PeopleInfo.objects.filter(book__name='天龙八部')
    people
    
    <QuerySet [<PeopleInfo: 乔峰>, <PeopleInfo: 段誉>, <PeopleInfo: 虚竹>, <PeopleInfo: 王语嫣>]>
    
  • Consultar todos los personajes cuya lectura de libros es mayor que 30

    people = PeopleInfo.objects.filter(book__readcount__gt=30)
    people
    
    <QuerySet [<PeopleInfo: 乔峰>, <PeopleInfo: 段誉>, <PeopleInfo: 虚竹>, <PeopleInfo: 王语嫣>, <PeopleIn
    
125 artículos originales publicados · Me gusta 260 · Visitas 120,000+

Supongo que te gusta

Origin blog.csdn.net/weixin_44685869/article/details/105400359
Recomendado
Clasificación