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