django 注释框架:distinct() 不起作用?

2023-12-20

在评论模型的任何字段上运行distinct()总是返回所有记录,

Comment.objects.values('user').distinct()

[{'用户': 1}, {'用户': 0}, {'用户': 0}, {'用户': 0}, {'用户': 0}, {'用户':1},{'用户':1},{'用户':1},{'用户':1}]

Comment.objects.values('ip_address').distinct()

[{'ip_address': u'127.0.0.1'},{'ip_address': u'192.168.0.180'}, {'ip_address':u'192.168.0.180'}, {'ip_address':u'192.168.0.180'}, {'ip_address': u'192.168.0. 180'}, {'ip_address': u'192.168.0.180'}, {'ip_address': u'192.168.0.180'}, {'ip_address': u'192.168.0.180'}, {'ip_address': u'192.168.0.180'}]

为什么会发生这种情况?有没有解决的办法?谢谢!

ps:在我的测试过程中,distinct() 在自定义模型的不同类型字段中确实运行得很好。评论框架有什么特别之处吗?

一点结论感谢大家回答这个问题,结合一些阅读,我得出以下结论:

  1. value() 影响最终的 SELECT 部分中的查找字段 sql("value() 接受可选的位置参数 *fields,其中 指定 SELECT 应限制的字段名称 https://docs.djangoproject.com/en/1.3/ref/models/querysets/#values")
  2. order_by() 也将其参数添加到 SELECT 部分。
  3. 在查找中使用distinct()将导致sql看起来像这样:

    SELECT DISTINCT[字段1、字段2、字段3] 来自...哪里...

    字段的值共同决定记录是否唯一。这些字段可能来自查找中的 value() 或 order_by() 函数。

  4. 因此,order_by()与distinct()结合时会增加一些不必要的效果,order_by中指定的字段也会考虑记录是否唯一 https://docs.djangoproject.com/en/1.3/ref/models/querysets/#distinct

  5. Django Comment 默认有一个隐藏的 order_by 参数,从而产生了整个问题。任何模型在返回 qs 时都有一个隐藏的 order_by 可能会导致同样的问题。

  6. 解决的方法是在末尾添加一个空的order_by() 查找,删除默认的 order_by。

Comment.objects.values('user').distinct().order_by()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

django 注释框架:distinct() 不起作用? 的相关文章

随机推荐

  • 节点应用程序 docker 映像在本地运行并在 Amazon ECS 上失败

    该应用程序可以在本地正常部署和运行很长一段时间 没有出现任何问题 然而 在 Amazon ECS 上 它似乎总是在空闲运行大约 2 30 分钟后崩溃 怎么了 Dockerfile Set the node alpine base image
  • 计算 SPARQL 中的个体数量

    我对 SPARQL 完全陌生 我想计算这个本体中的参与者数量 http data linkedmdb org directory actor http data linkedmdb org directory actor 我尝试了以下方法
  • 为什么 Mercurial 合并时很笨?如何使拉取/合并更改变得更简单?

    我刚刚开始使用 Mercurial 我想我正在尝试做一些非常简单的事情 一些应该非常典型的事情 但我很困惑为什么它如此复杂 以及为什么它不能按应有的方式工作 国际海事组织 我与朋友共享一些存储库 他做了一些更改并检查了几个文件并推送它们 现
  • 如何在asp.net mvc中回发后清除字段?

    我想知道如何在 ASP NET MVC 回发后清除字段 就像现在 当发生验证错误时 字段会保留用户输入的内容 不过 这很好 当没有发生验证错误时 我希望清除所有字段并显示一条消息 所以现在我使用 ViewData 成功显示 但不确定如何清除
  • Kotlin 多平台:JobCancellationException:父作业已完成

    我尝试编写一个使用 ktor 的 kotlin 多平台库 android 和 ios 因此 我在 kotlins 协程方面遇到了一些问题 When writing tests I always get kotlinx coroutines
  • 通过构建管道将 ASP.NET 应用程序部署到 Azure 应用服务

    我继承了一个 ASP NET 4 7 2 应用程序 它在我的计算机上成功运行和启动 我现在尝试通过 Azure DevOps Pipeline 将其部署到 Azure 应用服务 为了尝试做到这一点 我创建了一个 Azure 构建管道 其中包
  • mod_rewrite 在 URL 中带有尾随句点

    我的 Apache 上有一个 RewriteRule 以使 URL 变得友好 RewriteRule log script php u 1 QSA 这使得http example com log 用户名 http example com l
  • gzipped Parquet 文件在 HDFS for Spark 中可拆分吗?

    在互联网上搜索和阅读有关此主题的答案时 我收到了令人困惑的消息 有人可以分享他们的经验吗 我知道 gzipped csv 不是这样的事实 但也许 Parquet 的文件内部结构是这样的 Parquet 与 csv 的情况完全不同 使用 GZ
  • 通过斯坦福解析器提取所有名词、形容词形式和文本

    我试图通过斯坦福解析器从给定文本中提取所有名词和形容词 我当前的尝试是在 Tree Object 的 getChildrenAsList 中使用模式匹配来定位以下内容 NN paper NN algorithm NN information
  • 从 vscode 的集成终端中打开新的集成终端的命令是什么?

    我正在尝试设置一系列任务 每个任务都需要一个终端 为此 我需要使用一个命令从以前的集成终端打开一个新的集成终端选项卡 有没有办法在vs code集成终端中做到这一点 在 mac 中我会使用 open a Terminal 或者类似的东西tt
  • 在 pika / RabbitMQ 中处理长时间运行的任务

    我们正在尝试建立一个基本的定向队列系统 其中生产者将生成多个任务 一个或多个消费者将一次获取一个任务 处理它并确认消息 问题是 处理过程可能需要 10 20 分钟 而且我们当时没有回复消息 导致服务器与我们断开连接 这是我们消费者的一些伪代
  • 通知本地化不起作用

    我想本地化通知 并且我发现有这样的属性 例如 title loc key body loc key 用于本地化 I18N 通知标题和正文的 FCM 字段不起作用 例如 android priority normal notification
  • 结合来自 T-SQL 的 XML

    我有两个单独的表 TV 和 Receiver 我正在使用 FOR XML PATH 命令来构建 XML 我的问题是 我想将 TV XML Build 的输出与 Receiver XML Build 的输出结合起来 以创建一个 XML 输出
  • DataStax DDC 服务无法启动

    我刚刚安装了 DataStax Community Edition 但是当尝试运行以下命令时 C gt net start DataStax DDC Server 我得到以下回复 Thanks 我自己也遇到了同样的问题 请尝试以下操作 打开
  • Dagger:如果我每次都*想要*一个新实例怎么办?

    有趣的是 这个答案是多么难以找到 我已经使用 Dagger Android 一段时间了 并且已经设置了整个依赖关系图 我正在使用范围 限定符以及所有这些好东西 我不再是 Dagger 新手 但可以说我一直在 Android 设置中以相当标准
  • 检查是否为空[重复]

    这个问题在这里已经有答案了 这是一个非常简单的问题 但是因为我只做了这门语言一周 所以我还没有找到答案 以下两行之间出现错误 因为Regex随机为空 但我如何检查它是否为空 这样它就不会抛出错误 var Regex span class c
  • 我正在使用两个不同的 jQuery 函数,其中一个似乎抵消了另一个

    我正在尝试使用两块 jquery 作为灯箱和一个滚动条来构建我正在构建的单页网站 它们单独工作都很好 但是当我将它们放在同一页面上时 滚动条似乎取消了灯箱 使其无效 这是灯箱代码 这是滚动条代码
  • 如何在 C++ 中正确返回 null/空对象?

    我是一名 Java 开发人员 试图解决一个简单的 C 任务 在 Java 中 如果我想返回一个空 null 对象 以指示未找到该对象 我只需返回 null 例子 Person getGetByName String name for int
  • iOS5中如何将旧的emoji编码转换为最新的编码?

    遗憾的是 在 iOS5 最终发布后 我收到用户的报告称他们无法登录 因为名字里有emoji符号 苹果改变了emoji的编码 那么用户名包含旧版本的表情符号 我如何将它们转换为新的编码 thanks 具体来说 一个表情符号 老虎 在iOS5中
  • django 注释框架:distinct() 不起作用?

    在评论模型的任何字段上运行distinct 总是返回所有记录 Comment objects values user distinct 用户 1 用户 0 用户 0 用户 0 用户 0 用户 1 用户 1 用户 1 用户 1 Comment