根据django中的模型字段筛选queryset中的唯一记录

根据django中的模型字段筛选queryset中的唯一记录,django,django-models,filter,django-queryset,Django,Django Models,Filter,Django Queryset,我有一个像下面这样的模型 class SafetyRead(models.Model): name = models.CharField(max_length=256) accession_number = models.CharField(max_length=256) data = models.CharField(max_length=256) approved = models.BooleanField() radiologist = model

我有一个像下面这样的模型

class SafetyRead(models.Model):
    name = models.CharField(max_length=256)
    accession_number =  models.CharField(max_length=256)
    data = models.CharField(max_length=256)
    approved = models.BooleanField()
    radiologist = models.BooleanField() 

    def __unicode__(self):
        return 'SafetyRead - %s'%self.accession_number
通常,当我以下面的方式进行搜索时,我会得到结果

查询

SafetyRead.objects.filter(approved=False,radiologist=False)
结果

[<SafetyRead: SafetyRead - 2983>, <SafetyRead: SafetyRead- 2582>, <SafetyRead: SafetyRead - 2583>, <SafetyRead: SafetyRead - 2522>, <SafetyRead: SafetyRead - 2522>]

那么如何过滤呢?

我相信您正在寻找

尝试:


您希望在两个重复记录中保留哪一个?id较大的那个?但是通过使用
distinct
它给了我
***未实现错误:此数据库后端不支持字段上的distinct
错误抱歉,我在文档中遗漏了一些内容,如果使用postgres,您只能将字段传递给
distinct
。我已经更新了答案。但是如果我们只使用
disticnt()
,结果将是相同的,因为它将根据id删除重复记录,但我们希望根据正常distinct()调用中不正确的文档删除包含重复
登录号的重复记录,在确定哪些行是不同的时,数据库会比较每行中的每个字段。对于具有指定字段名的distinct()调用,数据库将只比较指定的字段名。
但我在这里使用的是mysql,所以当我使用
distinct('accessment_number')
时,它向我抱怨上述粘贴错误,当我使用just
SafetyRead.objects.filter(approved=False,radiologist=False)。distinct()
我仍然得到相同的查询设置结果,重复的
登录号2522
,现在该怎么办?
[<SafetyRead: SafetyRead - 2983>, <SafetyRead: SafetyRead- 2582>, <SafetyRead: SafetyRead - 2583>, <SafetyRead: SafetyRead - 2522]
SafetyRead.objects.filter(approved=False,radiologist=False).distinct()