Django model distinct 的使用方法
2024-08-29 20:14:23
原文:
今天突然有人问起在 django 的 model 里面怎么用 distinct, 对于这种东西,我一向的观点是查看django 的在线文档。于是不加思索的根据在线文档给出了答案,但结果很让人沮丧,运行程序时会报错: NotImplementedError: DISTINCT ON fields is not supported by this database backend, 从字面上看,貌似是因为才用了mysql 的原因,其实不是.
django 在线文档讲解 distinct 的连接如下:
https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.distinct
里面是这么讲解 distinct 的
>>> 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')
于是我按照这样做了一个,结果就出现上面的错误了.
真正的做法是这样的,如果用mysql 的话,distinct() 里面不要任何参数,参数应该写在 value 中去,类似如下方式:
if __name__ == "__main__":
a = Category.objects.values('parentcode','email').distinct()
for obj in a:
print obj
这表示按照 parentcode,email 组合去除重复的内容.
如果是这样:
if __name__ == "__main__":
a = Category.objects.values('parentcode').distinct()
for obj in a:
print obj
就表示按照 parentcode 去除重复的内容。
最新文章
- Chrome 扩展机制
- p/invoke碎片--对类的封送处理
- JQ常用代码
- 小小border用处多
- 点击 Run 之后发生了什么?
- DataTable to byte[]、DataTable to XML(string)
- Html5简单存储localStorage和sessionStorage
- R语言-神经网络包RSNNS
- 【GOF23设计模式】中介者模式
- poj 1159 dp回文串
- 国庆第六日(2014年10月6日11:51:15),node-webkit,理财产品
- 负载均衡之nginx
- javascript setinterval 正确的语法
- zookeeper源码 — 一、单机启动
- 测试miniconda,python以及机器学习包是否安装成功
- 【360图书馆】插入U盘自动攻击:BadUSB原理与实现
- Linux系统管理和维护常用命令
- docker部署PiggyMetrics分布式微服务
- Django中间件执行流程
- 使用 lego生成 Let's Encrypt 证书