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 去除重复的内容。  

原文地址:https://www.cnblogs.com/robinunix/p/11398421.html

时间: 2024-10-07 14:21:35

Django model distinct 的使用方法的相关文章

django model中的save()方法

Model.save(force_insert=False, force_update=False, using=DEFAULT_DB_ALIAS, update_fields=None) id和pk 如果一个model里没有显示声明哪一个字段(field)是主键(即在某个字段里声明primary_key=True),则django会自动生成一个名为id的AutoFields作为主键.model里的主键都有一个别名叫做pk(primary_key的缩写),无论这个主键是自动生成的还是我们指定的.

django model form 保存方法 django-rest-framework save 修改某一项值 方法

django Model Form django-rest-framework save 方法 修改某个数据的值 原文地址:https://www.cnblogs.com/zhaoyingjie/p/9235782.html

django model filter 条件过滤,及多表连接查询、反向查询,某字段的distinct

1.多表连接查询:当我知道这点的时候顿时觉得django太NX了.  class A(models.Model):    name = models.CharField(u'名称')  class B(models.Model):    aa = models.ForeignKey(A)B.objects.filter(aa__name__contains='searchtitle') 1.5 我叫它反向查询,后来插入记录1.5,当我知道的时候瞬间就觉得django太太太NX了.  class

django中将model转换为dict的方法

django中将model转换为dict的方法 from django.forms.models import model_to_dict from user.model import userprofile model_to_dict(userprofile.model.get(id=100)) d3 = {'username': 'zz_yy', 'password': 'zyjzyj'} a = UserProfile() a.username = 'zz__e' a.password =

Django model与数据库操作对应关系(转)

? Django对数据库的操作分用到三个类:Manager.QuerySet.Model. Manager的主要功能定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己的manager,增加表级方法: QuerySet是Manager的方法返回的,是一个可遍历结构,包含一个或多个元素,每个元素都是一个Model 实例,它里面的方法也是表级方法. Model是一条记录的类,它的功能很强大,里面包含外键实体等,它的方法都是记录级方法(都是实例方

Django model select的各种用法详解

<Django model update的各种用法介绍>文章介绍了Django model的各种update操作,这篇文章就是她的姊妹篇,详细介绍Django model select的用法,配以对应MySQL的查询语句,理解起来更轻松. 基本操作 # 获取所有数据,对应SQL:select * from User User.objects.all() # 匹配,对应SQL:select * from User where name = '运维咖啡吧' User.objects.filter(

django meta 类的使用方法

通过一个内嵌类 "class Meta" 给你的 model 定义元数据, 类似下面这样: class Foo(models.Model):     bar = models.CharField(maxlength=30) class Meta:         # ... Model 元数据就是 "不是一个字段的任何数据" -- 比如排序选项, admin 选项等等. 下面是所有可能用到的 Meta 选项. 没有一个选项是必需的. 是否添加 class Meta

转载:django model orM 用字典作为参数,保存数据

作者:轻舞肥羊 日期:2012-12-31 字体大小: 小 中 大   假设有一个字典,里面已经有了所有相关信息,现在想利用这个字典作为参数,跟django model  结合,用很少的代码量保存数据,有什么简便方法,比如有如下定义的model:  程序代码 from django.db import models class MyModel(models.Model):    title=models.CharField(max_length=250)    body= models.Char

Django Model数据访问Making queries

创建完Model之后, Django 自动为你提供一套数据库抽象层的API,利用它可以完成创建,提取,更新,删除对象的操作. 以下面的Model为例: class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() # On Python 3: def __str__(self): def __unicode__(self): return self.name class