从表格字段中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')
由于您可能已经设置了Meta
类ordering
属性,因此可以使用不带参数的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值