专栏首页全栈全栈在Django中使用DISTINCT

在Django中使用DISTINCT

有时候想用distinct去掉queryset中的重复项,看django文章中是这么说的

>>> Author.objects.distinct() [...] >>> Entry.objects.order_by('pub_date').distinct('pub_date') [...] >>> Entry.objects.order_by('blog').distinct('blog') [...] >>> Entry.objects.order_by('author', 'pub_date').distinct('author', 'pub_date') [...] >>> Entry.objects.order_by('blog__name', 'mod_date').distinct('blog__name', 'mod_date') [...] >>> Entry.objects.order_by('author', 'pub_date').distinct('author') [...] Note

django文档中特别介绍了,distinct的列一定要先order_by并且在第一项。

When you specify field names, you must provide an order_by() in the QuerySet, and the fields in order_by() must start with the fields in distinct(), in the same order.

For example, SELECT DISTINCT ON (a) gives you the first row for each value in column a. If you don’t specify an order, you’ll get some arbitrary row.

完全照做,用的mysql数据库最后出现了这样的警告:

 raise NotImplementedError('DISTINCT ON fields is not supported by this database backend')

NotImplementedError: DISTINCT ON fields is not supported by this database backend

告诉我数据库不支持。

当然可以这样:

items = [] for item in query_set: if item not in items: items.append(item)

如果想用distinct的话,在distinct前面加上values或values_list

 u.comment_set.values("forum").distinct() [{'forum': 1L}, {'forum': 2L}] u.comment_set.values_list("forum", flat=True).distinct() [1L, 2L]

其实就相当于values_list获得了一个数组然后set()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django 数据库迁移应该了解的操作

    如果想看迁移文件的执行状态,可以用showmigrations命令查看: $ python manage.py showmigrations 显示djang...

    KEVINGUO_CN
  • 关于 Django 的信号 post_save 的问题,如何判断是第一次保存?

    每当有一个模型的实例生成的时候就会去生成一个跟他有关的另一个模型,信号就是用的post_save来判断的,但是问题来了,就是每当我去修改那个模型之后,它就会又一...

    KEVINGUO_CN
  • Django中方便快捷的json响应

    目前流行的前后端分离开发模式中,前端工程师需要根据后端开发人员给出的API文档发起不同的请求得到数据,API文档规定了一些请求的模板以及响应的数据格式和代码。

    KEVINGUO_CN
  • 【死磕Sharding-jdbc】---group by的SQL重写为limit Integer.MAX_VALUE的无奈

    这篇文章源于【死磕Sharding-jdbc】-----重写的遗留问题,相关sharding-jdbc源码如下:

    用户1655470
  • Xamarin 开源应用汇集

    1、The Xamarin Field Service App, a Cross-Platform Starter Kit 2、FriendTab Initi...

    张善友
  • MySQL之text字段

    之前做的SQL审核工具不支持text类型的字段的,今天一个业务方问我为什么不支持text字段,大概给他讲了讲,后续发现可能还有些不完善的地方,这里总结一下t...

    AsiaYe
  • ArrayList源码解析,老哥,来一起复习一哈?

    JDK源码解析系列文章,都是基于JDK8分析的,虽然JDK14已经出来,但是JDK8我还不会,我…

    敖丙
  • 关于 uni-app 使用 web-view 页面之间互相跳转、通信等问题的解决方案

    最近开发小程序的时候、需要嵌入一个第三方网站、并且和第三方网站有些交互。这个第三方页面本身就是一个 HTML 页面、想着把它给嵌入到 uni-app 中,结果没...

    hedeqiang
  • 【图说】我国重点行业领域大数据应用研究(8大领域)

    全文较长,建议阅读时间4分钟。 往期回顾:【图说】2016年中国云计算产业趋势分析报告 ?

    钱塘数据
  • Windows下安装MariaDB

    各大 Linux 发行版的 MySQL 逃亡潮越演越烈,继 Mageia 2(原 Mandriva 社区衍生版)和 OpenSUSE 12.3 以后,Fedor...

    张善友

扫码关注云+社区

领取腾讯云代金券