zoukankan      html  css  js  c++  java
  • Django model distinct 的使用方法

    原文:

    今天突然有人问起在 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 去除重复的内容。  

  • 相关阅读:
    jQuery及javascript DOM创建节点(三)
    jQueryEasyUI Window的基本使用
    3.1、值类型
    手动依赖注入(二)
    3.1.2、字符类型
    不错不错
    我们应该讨论什么? 就面向对象的讨论所引发的一些思考
    保存个地址, 顺便问个问题~
    嗯嗯, 今天很高兴
    方法级AOP: 又一个补丁
  • 原文地址:https://www.cnblogs.com/robinunix/p/11398421.html
Copyright © 2011-2022 走看看