首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django如何根据过滤的多对多字段对查询集进行排序?

在Django中,可以使用order_by()方法对查询集进行排序。对于多对多字段的过滤,可以通过使用双下划线(__)来访问相关字段。

假设我们有两个模型:BookAuthor,它们之间是多对多关系。我们想要根据作者的名字对书籍进行排序。

首先,我们需要定义好模型和多对多关系:

代码语言:txt
复制
from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)

接下来,我们可以使用order_by()方法对查询集进行排序。对于多对多字段的排序,可以使用双下划线来指定相关字段。在这个例子中,我们可以使用authors__name来访问作者的名字字段。

代码语言:txt
复制
books = Book.objects.filter(authors__name='John').order_by('authors__name')

上述代码将返回所有作者名字为"John"的书籍,并按照作者名字进行排序。

关于Django的更多信息和详细用法,请参考腾讯云的Django产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django Xadmin字段过滤实例

在xadmin中是不能像原生admin那样使用formfield_for_manytomany方法来过滤字段 ?...进入xadmin源码,找到了formfield_for_dbfield这个方法,测试是有用,可以过滤第一个选项框值 ?...补充知识:给django admin后台管理user扩展下拉框及多选框字段 1.首先在models.py中编写扩展User所用到userProfile模型及下拉框和多选框选项值所需要模型(因为我所做下拉框和多选框值都是从数据库里面取得...),代码如下: 2.第二步编写admin.pyUser字段进行扩展,代码如下: # -*- coding: UTF-8 -*- from django.contrib import admin from...以上这篇Django Xadmin字段过滤实例就是小编分享给大家全部内容了,希望能给大家一个参考。

1.8K20

MySQL | 如何查询结果进行排序

数据操作语言:结果排序 如果没有设置,查询语句不会对结果进行排序。也就是说,如果想让结果按照某种顺序排列,就必须使用 ORDER BY 子句。 SELECT .........ASC 代表升序(默认),DESC 代表降序 如果排序列是数字类型,数据库就按照数字大小排序,如果是日期类型就按日期大小排序,如果是字符串就按照字符序号排序。...FROM t_emp ORDER BY ename ASC; SELECT empno,ename,hiredate,deptno FROM t_emp ORDER BY hiredate DESC; 排序字段内容相同情况...默认情况下,如果两条数据排序字段内容相同,那么排序会是什么样子?...数据库会先按照首要排序条件排序,如果遇到首要排序内容相同记录,那么就会启用次要排序条件接着排序

6.2K10

Django笔记(十三)一一,一之间查询

目录 一一 创建实例 choice类型如何获取具体值 如何获取一一另一个表里面的数据 一 实体类 一代码(自己创建第三个表) 一代码(Django给你生成第三个表) 如何操作第三个表...user_info ,是一字段,也就是这个UserProfile表里面的user_info字段,所有数据都不一样,不可能一样,因为是OneToOneField,一一 choice类型如何获取具体值...字段是choice类型,如何获取到是对应值,而不是键 这个表里面的这个字段,数据库保存是键1或者2 我想查询出来这个字段是具体值,如何写 也就是使用下划线, get_字段名...连接 一代码(Django给你生成第三个表) 我们有了男孩表,女孩表,之前我们写一个相亲表,让男孩表和女孩表进行关联。现在我们不写第三个表了,但是还想让两个表进行关联,我们可以这样写。...给你生成,就是通过ManyToManyField() 这个 如何操作第三个表 这个Django给生成第三个表,在model文件里面是没有的,那么我们要如何操作这个表,也就是实现这个表增删改查

2.9K20

Django 字段更新和插入数据实例

()等查询(QuerySet) book_obj.save() #-------一定得save(),才能对数据库进行修改 return redirect('/index/') 补充知识...:DjangoManyToManyField()使用以及through作用 创建一个经典多关系:一本书可以有多个作者,一个作者可以有本书(如下) ?...那么我们如何进行数据查询呢?...可以看出这个blog_book_authors是根据多关系自动生成关系表,但是如果我们想要搜集关于这个作者发布某一本书籍时间额外增加一个字段,或者说与现有的系统集成,这个关系表已经存在了,那对于这样情形...,这两个外键定义了两个模型之间是如何关联到一起 所以当创建多关系模型时候提倡使用through参数去指定并创建中间模型,这样比较方便我们进行字段扩展 那么此时我们又该如何添加和删除多关系呢

4.1K30

django 1.8 官方文档翻译: 2-5-4 聚合 (初稿)

例如,我们可以查询每个作者,注上它写所有书(以及合著书)一共有多少页(注意我们如何使用 ‘book’来指定Author -> Book反转关系): >>> Author.objects.annotate...例如,根据一本图书作者数量多少查询 QuerySet进行排序: >>> Book.objects.annotate(num_authors=Count('authors')).order_by('...不是在原始 QuerySet返回结果中每个对象中添加注解,而是根据定义在values() 子句中字段组合先结果进行唯一分组,再根据每个分组算出注解值, 这个注解值是根据分组中所有的成员计算而得...但是上面那样做是行不通。这是因为默认排序项中 name也是一个分组项,所以这个查询根据非重复 (data, name) 进行分组,而这并不是你本来想要结果。...这个行为与查询文档中提到 distinct() 一样,而且生成规则也一样:一般情况下,你不想在结果中由额外字段扮演这个角色,那就清空排序项,或是至少保证它仅能访问 values()中字段

1.6K30

Django篇(二)

更多模型字段,请参考Django官方文档。写明明白白。 查询 我们在Django中通过操作模型类去做增删改查,sql语句那么,我们同样可以进行增删改查。 其中最复杂也就是查询了。...exclude: 返回不满足此条件,也是可以返回多条数据,返回类型也是QuerySet。 order_by: 查询结果进行排序,返回类型也是QuerySet。...('id') 查询所有人按照ids从大到小排序 student.objects.all().order_by('-id') 也可以根据多个字段排序 根据id和age进行排序 student.objects.all...查询相当于一个列表,我们取值可以遍历取出,也可以进行下表或者切片取出。 当我们一个查询进行切片或下标查询,会返回一个新查询。 不同是我们切片不允许为负值。 判断一个查询是否有数据。...2、 一个老师对应多个学生,一个学生对应多个老师 那么老师表和学生表就是关系。 我们需要使用ManyToManyField(),那么你会说我定义在那个表里了?定义那个表都行。

1.3K20

django_2

要求 修改数据库 Django shell 数据级联(一) 元信息 定义字段 模型过滤 创建对象4种方式 查询 过滤器 获取单个对象 字段查询 时间 聚合函数 跨关系查询 F对象 Q对象..., 这个字段在表中必须有唯一值 关系 ·分类 ·ForeignKey:一,将字段定义在端中 ·ManyToManyField:,将字段定义在两端中 ·OneToOneField...概念:查询表示从数据库获取对象集合,查询可以有多个过滤器。...过滤器:过滤器就是一个函数,基于所给参数限制查询集结果,返回查询方法称为过滤器。 查询经过过滤器筛选后返回新查询,所以可以写成链式调用。.../缓存 查询缓存:每个查询都包含一个缓存,来最小化对数据库访问 在新建查询集中,缓存首次为空,第一次查询求值,会发生数据缓存,django会将查询出来数据做 一个缓存,并返回查询结果

3.6K30

Django 数据统计查询

但是,有时你会需要处理一些有关对象集合统计。本文描述如何使用 Django 查询来处理统计。 本文我们将使用以下模型。...每本书与每个作者之间是一个关系,我们要为每本书总结这个关系。 要产生每个对象统计可以使用 annotate() 子句。...每本书与每个作者之间是一个关系,我们要为每本书总结这个关系。 要产生每个对象统计可以使用 annotate() 子句。...=1) 上例先进行统计,然后在统计结果上使用了过滤器。...第一个查询中统计先于过滤器,所以过滤统计没有作用。而第二个查询过滤器先于统计,所以统计对象是已经过滤。 order_by() 统计可以作为排序基础。

2.2K20

Django—模型

1) 根据一本图书作者数量多少查询 QuerySet进行排序 Book.objects.annotate(author_num=Count("author")).order_by("author_num...4.查询 查询表示从数据库中获取对象集合,在管理器上调用某些过滤器方法会返回查询查询可以含有零个、一个或多个过滤器。...filter():返回满足条件数据。 exclude():返回满足条件之外数据,相当于sql语句中where部分not关键字。 order_by():结果进行排序。...在新建查询集中,缓存为空,首次查询求值时,会发生数据库查询django会将查询结果存在查询缓存中,并返回请求结果,接下来查询求值将重用缓存中结果。...限制查询 可以对查询进行取下标或切片操作,等同于sql中limit和offset子句。   注意:不支持负数索引。 查询进行切片后返回一个新查询,不会立即执行查询

6.1K21

Django MVT之M

Django MVC概述和开发流程中已经讲解了DjangoMVT开发流程,本文重点MVT中模型(Model)进行重点讲解。 配置MySQL数据库 确保已经安装了操作mysql包。...使用时,需引入django.db.models包,常用字段类型如下: 字段类型 描述 AutoField 根据实际ID自动增长整数字段,通常不需要直接使用,Django会自动生成ID字段并且自动增长。...QuerySet对象 参数为查询条件。 exclude 返回表中不满足条件数据。 QuerySet对象 参数为查询条件。 order_by 查询结果进行排序。...可以对一个查询进行取下标或切片操作,切片操作会产生一个新查询。与python列表不同是,下标不允许为负数。...# 1.自定义一个管理器类,这个类继承models.Manger类 class SchoolInfoManager(models.Manager): # 过滤父类方法返回查询来改变查询

99510

Django相关知识点回顾

我们结合后端服务器处理流程进行说明: 1.接收HTTP请求报文,web服务器进行解析,并调用框架程序处理请求。 2.web框架程序进行路由分发(根据url找到对应处理函数)。...QuerySet(查询) exclude 查询条件 返回不满足条件所有数据 QuerySet(查询) order_by 排序字段 查询结果进行排序 QuerySet(查询) aggregate...()过滤器调用聚合函数 排序排序默认是升序,降序在排序字段前加- 使用order_by 关联查询: 1.查询和指定对象关联数据 # 由1查象.类名小写_set.all() 例:book.heroinfo_set.all...() # 由查1 对象.外键属性 例:hero.hbook 2.通过模型类进行关联查询 # 查图书(一) 一类.objects.get|filter(类名__字段__条件=值) 例:books =...查询结果缓存 使用同一个查询时,只有在第一次使用查询时会进行数据库查询操作,然后Django框架就会把查询结果存起来,下一次再使用这个查询时,使用Django之前存储结果。

10K51

Python全栈开发之Django基础

() 查询 查询表示从数据库中查询对象集合 返回查询过滤器 all():返回所有数据 filter(): 返回满足条件数据 exclude(): 返回不满足条件数据 order_by()...: 结果排序 返回单个值过滤器 get(): 返回单个满足条件对象,如果未找到会抛出DoesNotExist异常,如果返回多条抛出MultipleObjectReturnned异常 count(...()[0:2] 关联 关系字段类型 ForeignKey:一,将字段定义在一端中 ManyToManyField:,将字段定义在任意一端中 OneToOneField:一一,将字段定义在任意一端中...由一访问语法 一端对象.多端类名_set b = BookInfo.objects.get(id=1) b.HeroInfo_set.all() 由访问语法 多端模型对象.多端模型类类关系字段...actions_on_bottom=True 同上,只不过是底部显示属性 字段排序 admin_order_field=[字段1,字段2] 列标题 short_description='列标题' 侧边栏过滤

3.7K20

35.Django2.0文档

C:根据用户输入委派视图部分,由 Django 框架根据 URLconf 设置,给定 URL 调用适当Python 函数  由于 C 由框架自行处理,而 Django 里更关注是模型(Model...如果查询没有返回结果也会抛出异常:  6.数据排序 在运行前面的例子中,你可能已经注意到返回结果是无序。 我们还没有告诉数据库 怎样结果进行排序,所以我们返回结果是无序。...在你 Django 应用中,你或许希望根据字段检索结果排序,比如说,按字母顺序。 那么,使用order_by()这个方法就可以搞定了。 ?...我们可以对任意字段进行排序,如果需要以多个字段为标准进行排序(第二个字段会在第一个字段值相同情况下被使用到),使用多个参数就可以了,如下: ?...另一个常用编辑页面自定义是针对字段。 真如我们在book编辑页面看到那样,`` 字段`` 被展现成多选框。虽然多选框在逻辑上是最适合HTML控件,但它却不那么好用。

11.2K100

Django之Model操作数据库详解

Django ORM框架功能: 建立模型类和表之间对应关系,允许我们通过面向对象方式来操作数据库。 根据设计模型类生成数据库中表格。 通过方便配置就可以进行数据库切换。...查询结果排序 reverse() 查询结果反向排序 distinct() 从返回结果中剔除重复记录 values_list(*field...根据日期获取查询 datetimes() 根据时间获取查询 none() 创建空查询 union() 并 intersection...Meta类中ordering属性QuerySet中对象进行排序     Student.objects.filter(school="阳关小学").order_by('-age', 'name'...__gt=4 九、实例 1、DjangoORM中如何判断查询结果是否为空,判断djangoorm为空 result= Booking.objects.filter() 方法一 .exists()

7K10
领券