首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Django Rest框架上按多对多属性排序

在Django Rest框架上按多对多属性排序
EN

Stack Overflow用户
提问于 2017-02-16 21:32:22
回答 1查看 480关注 0票数 1

我有一桌TransportationOrders。每个TransportationOrder都有一条路由。每条路线都有自己的位置。

我需要的是列出所有的TransportationOrders,但按我要访问的第一个地方的名称排序。

我的模型简化了:

代码语言:javascript
运行
AI代码解释
复制
class TransportationOrder(models.Model):
    name = models.CharField(max_length=45, unique=True)
    user = models.ForeignKey('auth.User')
    description = models.CharField(max_length=300, blank=True, null=True)
    route = models.ManyToManyField(Place, through='PlaceHasTransportationOrder')


class PlaceHasTransportationOrder(models.Model):
    place = models.ForeignKey(Place, on_delete=models.CASCADE)
    transportation_order = models.ForeignKey(TransportationOrder, related_name="route", on_delete=models.CASCADE)
    order = models.IntegerField(default=1) #This indicate the order of  visits
    date = models.DateField()

class Place(models.Model):
    name = models.CharField(max_length=45)
    address = models.CharField(max_length=45, null=True, blank=True, default=None)
    lat = models.FloatField(null=True, blank=True, default=None)
    lon = models.FloatField(null=True, blank=True, default=None)

我试图在TransportationOrder模型上定义一个方法,但当我尝试http:///url?ordering=first_place_name时,这不起作用,因为这种排序在数据库级别上有效。我有什么选择?

代码语言:javascript
运行
AI代码解释
复制
def first_place_name(self):
    place = Place.objects.all().filter(placehastransportationorder__transportation_order=self, placehastransportationorder__order=1)
    return place[0].name
EN

回答 1

Stack Overflow用户

发布于 2017-02-16 23:57:52

尝试使用Django QuerySets的order_by方法。我相信你想要的是

代码语言:javascript
运行
AI代码解释
复制
TransportationOrder.order_by('routes__name').first()

或者类似的东西。

作为示例,我使用Django 1.10.5将您的模型加载到one中。

我创建了5个对象:pp2Place条目,tTransportationOrderpt & pt2PlaceHasTransportationOrder条目。

pt相关,p2pt2相关。在ptpt2上都使用了TransportationOrder对象t

我将测试的Place命名为"Testing“和"Alphabet",第二个命名为"Alphabet”。这使得对TransportationOrderroutes字段的基本查询就可以按id顺序返回它们:

t.first().routes.all().values_list('name') <QuerySet [('Testing',), ('Alphabet',)]>

应用我上面提到的order_by会产生以下结果:

t.order_by('routes__name').values_list('routes__name') <QuerySet [('Alphabet',), ('Testing',)]>

编辑:

最后一条语句的输出按Place名称的顺序列出了TransportationOrder对象。我错误地缩小了输出范围,只输出routes__name关系路径的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42285065

复制
相关文章
python 判断字符串是否包含(不区分大小写)
python 判断字符串是否包含(不区分大小写) 通过in运算符来检查或通过str.find("")来检查 如果想要不区分大(upper())小(lower())写,可以将字符串全部转换为大写字母或小写字母 示例: a = "Hello World,你好世界" # 通过in运算符来检查。 if "Hello" in a: print("Yes") # 通过str.find("")来检查。 if a.find("Hello") != -1: print("Yes") # 如果想要不
超级小的大杯柠檬水
2023/05/06
2.8K0
Git 开启区分大小写
默认情况下git是忽略区分大小写的,多人合作的情况下不规范很容易造成问题,本文记录Git大小写敏感的配置方法。 步骤 开启 全局开启 git config --global core.ignorecase false 查看 找到 core.ignorecase=false 即说明修改完毕 git config --list 参考资料 https://www.cnblogs.com/wangyang0210/p/10767951.html
为为为什么
2022/08/06
1.7K0
Windows 不区分大小写
之前就看过说 Windows 不区分大小写,但平时用得少倒也没什么体验,没想到还真能踩一次坑。
zqb_all
2020/05/04
2.7K0
Git 默认不区分大小写
背景: 通过代码规范,修改了包名为全小写(修改了文件夹目录),但发现push后,git服务器的文件夹目录还是为大写 解决方法: git默认是不区分大小写的,意思是你修改一个文件名/文件夹的时候,git status 是不会提示你有修改的  可以通过git config --get core.ignorecase 查看默认配置 通过git config core.ignorecase false设置为区分大小写 然后git status 就可以看到变动 然后push到远程服务器
千往
2018/01/24
2.1K0
vim替换区分大小写_word英文大小写切换
&是正则表达式全部匹配项, 其他的还有:\1,\2,\3,…,\9。表示第1,2,3…9个匹配项。
全栈程序员站长
2022/09/29
1.7K0
C语言 遍历一个文件夹的所有文件以及函数strstri不区分大小写查找字符串
path=/sys/class/drm/,d_name: card0-HDMI-A-1
IT工作者
2022/05/20
1.8K0
php字符串大小写转换函数
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105851.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/09
1.2K0
细说MySQL区分字母大小写
在Linux系统上使用MySQL,MySQL是区分字母大小写的,例如建A表时表名是大写的A,修改A表时脚本里写的a,就会报错表a不存在。在MySQL中,数据库对应数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件或多个文件,所以,是否区分大小写是其所在的操作系统决定的。在大多数基于Unix的系统中,MySQL是区分大小写的;而在Windows系统中,MySQL是不区分大小写的。 操作系统中提供了lower_case_table_names参数用于修改这种区分大小写的策略。默认情况下,Linux
JavaQ
2018/04/04
2.8K0
nginx 配置路由不区分大小写
location 指令说明,该语法用来匹配 url,语法如上: =:用于不含正则表达式的 url 前,要求字符串与 url 严格匹配,匹配成功就停止向下搜索并处理请求。 ~:用于表示 url 包含正则表达式,并且区分大小写。 ~*:用于表示 url 包含正则表达式,并且不区分大小写。 ^~:用于不含正则表达式的 url 前,要求 Nginx 服务器找到表示 url 和字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再匹配。 如果有 url 包含正则表达式,不需要有 ~ 开头标识。
2022/02/20
7K0
nginx 配置路由不区分大小写
以太坊地址区分大小写么
从实验结果上来看,纯小写地址和纯大写地址实际上是同一个地址,那么是不是由此可以得出以太坊地址不区分大小写呢?我们再看下面这个 remix 上的实验:
LA0WAN9
2021/12/14
1.4K0
以太坊地址区分大小写么
python函数——字符串字母大小写转换
在日常字符串操作中需要对其做大小写操作,python 中提供了四种大小写相关的操作方法: s = "HeLLo pYTHON"
莫斯
2020/09/10
9710
地图函数在 Python 中有什么用?
Python 的 map() 函数将一个函数应用于迭代器中作为输入提供的每个项目。列表、元组、集合、字典或字符串都可以用作迭代器,它们都返回可迭代的映射对象。Map() 是一个内置的 Python 函数。
很酷的站长
2023/02/20
7370
地图函数在 Python 中有什么用?
Excel公式技巧96:区分大小写查找
有时候,我们需要执行区分大小写的查找。如下图1所示,由字母a、t、l、a和s的不同大小写组成的字符串,现在要查找字符串“AtLaS”对应的数量。
fanjy
2021/07/12
1.7K0
Excel公式技巧96:区分大小写查找
SQL Server不区分大小写的问题
  默认情况下,SQL Server不区分大小写,如果数据表TEST的TNAME列中有数据“abcd”和“Abcd”, 如果使用查询语句:select * from test  where  tname  like 'a%',则查询的结果会把上面的两条记录都查询出来,这一点上和Oracle有区别.
跟着阿笨一起玩NET
2018/09/19
3.4K0
mysql 模糊查询实现不区分大小写
在上面语句中我们可以看到使用的是‘d%’或者是'D%'这样看上去好像有点不是很好。
凯哥Java
2019/07/01
5.1K0
【知识】以太坊地址是否区分大小写
从实验结果上来看,纯小写地址和纯大写地址实际上是同一个地址,那么是不是由此可以得出以太坊地址不区分大小写呢?我们再看下面这个 remix 上的实验:
辉哥
2021/05/18
7.6K0
【知识】以太坊地址是否区分大小写
flag区分大小写的sql盲注
可以看到不区分大小写,而且都会转化为大写。这个是因为MySQL不区分大小写,而且大写字符的ASCII码都比小写的小。
Power7089
2020/07/27
1.7K0
flag区分大小写的sql盲注
Qt 区分多个信号函数绑定一个槽函数
当有多个信号函数(Signal)绑定同一个槽函数(Slot)时,你会有这样的需求,在槽函数中我希望知道到底是哪个信号函数发送出来的信号,这样根据不同的发送者来执行不同的操作。想实现这个功能可以在槽函数中调用 sender() 方法获取发送信号的对象类型。然后进行处理,具体代码如下:
我与梦想有个约会
2023/10/20
4250
点击加载更多

相似问题

MYSQL:重音敏感但不区分大小写的最佳utf设置

12

php、mysql:比较字符串-区分重音和不区分大小写

10

QDirIterator应不区分大小写,但不区分大小写

10

如何匹配字符串,但不区分大小写?

61

PostgreSQL重音+不区分大小写的搜索

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档