从表格字段中select不同的值

我正在努力让自己的头靠近Django的ORM。 我想要做的是获得我的桌子上一个字段内的不同值的列表….相当于下列之一:

SELECT DISTINCT myfieldname FROM mytable 

(或者可选地)

 SELECT myfieldname FROM mytable GROUP BY myfieldname 

我至less喜欢用Django的方式,然后诉诸原始的SQL。 例如,用一个表格:

身份证,街道,城市

1,赫尔大街

2,其他街,赫尔

3,Bibble路,莱斯特

4,另一种方式,莱斯特

5,高街,Londidium

我想得到:

赫尔,莱斯特,Londidium。

说你的模型是'店'

 class Shop(models.Model): street = models.CharField(max_length=150) city = models.CharField(max_length=150) # some of your models may have explicit ordering class Meta: ordering = ('city') 

由于您可能已经设置了Metaordering属性,因此可以使用不带参数的order_by()来在使用distinct()时清除任何sorting。 请参阅order_by ()下的文档

如果您不希望将任何顺序应用于查询,甚至不需要默认sorting,则可以不带任何参数调用order_by()。

distinct()在它讨论与使用distinct()与sorting问题。

要查询你的数据库,你只需要打电话:

 models.Shop.objects.order_by().values('city').distinct() # returns a dictionary 

要么

 models.Shop.objects.order_by().values_list('city').distinct() # returns a list of tuples. 

您还可以将flat=True添加到values_list以获得一个平面列表。

另请参阅: 按字段获取不同的Queryset值

Interesting Posts