Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正确排序模型数据时出现问题

正确排序模型数据时出现问题
EN

Stack Overflow用户
提问于 2017-01-09 02:09:29
回答 1查看 37关注 0票数 0

我无法正确地对来自数据库的数据进行排序。

我的设置:我广泛地使用Django + Django Rest Framework,并使用VueJS作为前端。我有一个数据库表,其中包含对用户的ForeignKey引用的消息。这些消息来自不同的联系人(电话号码),我希望能够在对话中对它们进行分组。这样,在前端,我将能够看到一个对话框,其中包含具有该phone_number的所有消息,在另一个对话框中,包含具有不同phone_number的单独对话,等等。

我希望它的排列方式是,我希望最近的对话框出现在对话框的左上角,第二个最近的对话框的右边,然后继续最近的对话框在右下角。

这是Django模型:

代码语言:javascript
运行
AI代码解释
复制
class Message(models.Model):
    phone_number = models.CharField(max_length=100, blank=True)
    phone_number_clean = models.CharField(max_length=100, blank=True)
    contact_name = models.CharField(max_length=255, blank=True)
    date_time = models.DateTimeField(null=True)
    body = models.TextField(blank=True)

    user = models.ForeignKey(User)

在我的Django Rest Framework视图文件中,我覆盖了list()方法,如下所示:

代码语言:javascript
运行
AI代码解释
复制
queryset = self.filter_queryset(self.get_queryset()).order_by("date_time") # get the data ordered by date_time
serializer = self.get_serializer(queryset, many=True)
data = serializer.data
data.sort(key=itemgetter("phone_number"))
conversation_list = []

for key, group in itertools.groupby(data, lambda item: item["phone_number"]):
    conversation_dict = {}
    messages = [item for item in group][-50:]  # Get only the last 50 messages per phone_number
    conversation_dict["messages"] = messages  # A list of all the messages
    conversation_dict["conversation_key"] = key
    conversation_list.append(conversation_dict)

return Response(conversation_list)

我使用itertools.groupby()是为了通过phone_number对我的消息进行分组。出于这个原因,我的理解是我必须使用data.sort(key=itemgetter("phone_number")),因为如果phone_number记录分散在各处,groupby()就不会工作。不幸的是,正是这个data.sort()改变了排序,我完全失去了原来的order_by("date_time")排序。

我试过很多东西。在最初调用之前和之后,我都尝试过调用data.sort(key=itemgger("date_time")。如果我之前调用它,它是无效的;如果我在之后调用它,我会丢失phone_number排序。我尝试将date_time作为第二个参数传递给data.sort(),它不起作用。我尝试了其他我现在甚至不记得的事情--它们都没有产生任何结果。

我已经在这上面工作了1.5天了,我被卡住了。我会感谢任何想法,包括如何更好地分组我的数据,以及如何让分组和date_time排序正确完成。

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2017-01-09 02:23:27

我真的需要建立一个宗教或者别的什么。每次我在SO上发布一个问题,我都能在30分钟内自己回答。

这是我所做的:

QuerySet现在看起来像这样:

代码语言:javascript
运行
AI代码解释
复制
queryset = self.filter_queryset(self.get_queryset()).order_by("phone_number_clean", "date_time")

我在groupby()循环中添加了另一个conversation_dict参数:

代码语言:javascript
运行
AI代码解释
复制
conversation_dict["last_date"] = messages[-1]["date_time"]

本质上,它只是获取该会话的最后一条消息的日期。

groupby循环之后,我简单地执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
conversation_list.sort(key=itemgetter("last_date"))

我得到了我想要的结果。瞧!

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

https://stackoverflow.com/questions/41540033

复制
相关文章
设置输入延时约束
这是一个经典的时序分析模型,上游芯片将时钟发送给FPGA,对于内部同步元件之间的可以使用create_clock进行约束,对于外部芯片发送数据通过FPGA端口到达FPGA内部第一级接受触发器使用set_input_delay进行约束,对于FPGA的末级触发器通过端口到达下游芯片使用set_output_delay进行约束。输入端口到输出端口的组合逻辑使用set_max_delay进行约束。 图中trace_delay指的是板级延迟,输入延迟指的是上游芯片的时钟沿发出数据到FPGA接收到数据所需的时
瓜大三哥
2018/02/24
2.5K0
设置输入延时约束
iOS从Xib中设置样式
iOS在写视图的有的人喜欢纯代码去写,从之前的绝对定位方式(Frame),到现在的自动布局(Autolayout),但这种方式的好处是便于复制修改和装X,但是缺点是代码不容易看,不便于修改
码客说
2019/10/22
2.4K0
【已解决】Xcode 9对于 Fastlane 打包成功无法Export iPA
【已解决】Xcode 9对于 Fastlane 打包成功无法Export iPA 问题描述 最近打包系统一直走在导出 iPA 的时候就错误了。出现了证书错误。 29E2BFAA-FAA9-40D6-A
君赏
2018/09/07
1K0
WebGL或OpenGL关于模型视图投影变换的设置技巧
看了不少的关于WebGL/OpenGL的资料,笔者发现这些资料在讲解图形变换的时候都讲了很多的原理,然后举出一个特别简单的实例(坐标是1.0,0.5的那种)来讲解。确实一看就懂,但用到实际的场景之中就一脸懵逼了(比如地形的三维坐标都是很大的数字)。所以笔者这里结合一个具体的实例,总结下WebGL/OpenGL中,关于模型变换、视图变换、投影变换的设置技巧。
charlee44
2022/05/05
1.1K0
WebGL或OpenGL关于模型视图投影变换的设置技巧
或对,或错?
公号许久没更文了,这段时间以来,自己在面临着一些抉择。未曾想过,毕业后一个月考虑的事情比大学四年加起来的还要多。也许是大学过得太安逸了,欠的债全部攒到毕业后来还。
Python技术与生活认知的分享
2018/09/30
4710
或对,或错?
Oracle 基础--【表空间与表】【约束】【视图】
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
颍川
2019/11/21
8810
设置Xcode自动管理证书文件
许多的开发者依然维护着旧的项目,他们也许需要选择一个证书签名去编译。这个问题讨论怎么在Xcode设置来自动化选择证书通过他们默认的设置,这个问题适用于IOS和MAC的开发人员
君赏
2018/08/31
3.3K0
设置Xcode自动管理证书文件
对复制实施主键约束
在本文中,我们介绍一个配置选项,该选项控制复制通道是否允许创建没有主键的表。这延续了我们最近在复制安全性方面的工作,在该工作中,我们允许用户强制执行权限检查和/或强制执行基于行的事件。
MySQLSE
2020/09/28
9430
对复制实施主键约束
【IOS开发基础系列】Autolayout自动布局专题
        bounds是指这个view在它自己坐标系的坐标和大小 而frame指的是这个view在它superview的坐标系的坐标和大小区别主要在坐标系这一块。很明显一个是自己为原点的坐标系,一个是以屏幕为原点的坐标系。
江中散人_Jun
2023/10/16
3990
【IOS开发基础系列】Autolayout自动布局专题
Xcode中和symbols有关的几个设置
其实被这个问题困扰了好久,不过秉承着三分钟热度的新年新气象,还是要多弄懂一点(⊙_⊙)ゞ
且行且珍惜_iOS
2022/05/13
2.1K0
Xcode中和symbols有关的几个设置
【约束布局】ConstraintLayout 之 Chains 链式约束 ( Chains 简介 | 代码 及 布局分析 | 链头设置 | 间距设置 | 风格设置 | 权重设置 )
Chains 创建后 代码 及 样式 : 下图是 官方配图 , 表示一个 最小的 链 , 只有两个 控件 , 控件两端 约束于 父控件 , 控件之间 互相约束 ;
韩曙亮
2023/03/27
3.8K0
【约束布局】ConstraintLayout 之 Chains 链式约束 ( Chains 简介 | 代码 及 布局分析 | 链头设置 | 间距设置 | 风格设置 | 权重设置 )
xcode7中KSImageNamed-Xcode-master插件无法使用问题的解决
Xcode 升级到7之后VVDocumenter-Xcode,OMColorSense,KSImageNamed等一系列的插件失效的解决办法,以及不小心误点了 Skipbundle 的解决办法。
用户1451823
2018/09/13
9960
xcode7中KSImageNamed-Xcode-master插件无法使用问题的解决
xcode 8.0 导致rn无法运行解决办法
Ignoring return value of function declared with warn_unused_result attribute
conanma
2021/05/10
8410
MyLayout和XIB或SB的混合使用方法
MyLayout是一个可以非常简单和方便的实现各种界面布局的第三方开源库。在我的github项目中大部分DEMO都是通过代码来实现界面布局的,但这并不是表示MyLayout不支持XIB和SB。 在构建一个应用的MVC框架中,我们希望模型、视图、控制这三部分都尽可能的低耦合,而苹果推荐的视图部分构建则是通过XIB或者SB来完成的。因为MyLayout中的各种布局视图类其实都是从UIView派生的,因此MyLayout是完全可以和XIB以及SB混合使用的。 MyLayout的一些布局视图属性以及子视图的扩展布局属性是可以在XIB或者SB界面编辑器里面进行设置的。唯一的一个缺点是这些属性的设置不能起到所见即所得的效果。 因为MyLayout是一个独立而完整的界面布局框架,因此您可以和系统默认的AutoLayout混合使用,也可以完全独立的单独使用。
欧阳大哥2013
2018/08/22
9190
MyLayout和XIB或SB的混合使用方法
【说站】mysql主键约束的设置
UNIQUE 和 PRIMARY KEY 的区别:一个表可以有多个字段声明为UNIQUE,但只能有一个 PRIMARY KEY声明。
很酷的站长
2022/11/23
2.8K0
WWDC 2018年十大视频评论
现在,“ 开发人员Triceraptus ” 的年度迁移已经结束,WWDC 2018包装已经从圣何塞的McEnery会议中心落下帷幕,我们还剩下另一系列令人信服的会议视频。
iOSDevLog
2018/08/22
3.5K0
WWDC 2018年十大视频评论
mysql 设置外键约束(foreign key)
建立外键约束可以采用列级约束语法和表级约束语法,如果仅仅对单独的一个数据列建立外键约束,则使用列级约束语法即可;如果需要对多个列组合创建外键约束,或者需要为外键约束指定名字则必须使用表级约束语法。
全栈程序员站长
2022/06/25
5.6K0
WWV 2018年十大必看视频
我们汇集了十大WWDC 2018视频列表,涵盖了您需要知道的一切,包括Core ML,Siri Shortcuts,ARKit 2等等!
iOSDevLog
2018/10/10
3.1K0
WWV 2018年十大必看视频
怎么设置ie兼容性视图设置_ie浏览器兼容性视图怎么设置
通过域策略和用户配置文件,设定IE的兼容性视图后,新发放虚拟机兼容性视图设置没有效果
全栈程序员站长
2022/10/04
2.9K0
怎么设置ie兼容性视图设置_ie浏览器兼容性视图怎么设置
mysql 取消外键约束_主键约束和外键约束什么意思
解决方法是在Mysql中取消外键约束: SET FOREIGN_KEY_CHECKS=0;
全栈程序员站长
2022/11/01
6.9K0
mysql 取消外键约束_主键约束和外键约束什么意思

相似问题

无法为重复视图设置约束(Xcode 11.0)

123

解开或关闭视图控制器不工作。Xcode 6.4

122

iOS: layoutIfNeeded似乎不能在约束更改后更新视图(Xcode6.4,Swift 1.2)

10

XCode 6.4提交

11

无法用Xcode 6.4构建核心图

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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