django模型中的独特元素

时间:2010-02-02 00:20:55

标签: sql django django-models

我是Django新手,我想知道是否有更有效的方式(在数据库级别)执行以下操作。

我有模特:

class Foo(models.Model):
    item=models.IntegerField()
    another_item=models.IntegerField()

想要获得“item”的所有不同值的迭代。

这是我到目前为止所做的:

distinct=set([row.item for row in Foo.objects.all()])

这很容易理解。但是,如果我理解Django如何工作,那么SQL查询效率不高,因为它类似于:

SELECT * FROM DB

当我只需要:

SELECT DISTINCT item FROM DB

如何更有效地做到这一点?

1 个答案:

答案 0 :(得分:4)

您希望将distinct子句与valuesvalues_list子句结合使用。

Doc starts heredistinctvaluesvalues_list都在那里。

所以你可以这样做:

Foo.objects.values_list('item', flat=True)

这会返回一个项目列表 - 与您的SELECT DISTINCT item FROM DB查询匹配。