Django models 如何在django queryset中按计数排序?

Django models 如何在django queryset中按计数排序?,django-models,django-queryset,Django Models,Django Queryset,我尝试使用此查询,但未给出预期结果 ships = Shipment.objects.filter(added_on__gte=("2016-10-22")).annotate(sku_count=Count('sku')).order_by('sku_count') 如果您想按“sku”列分组并按其计数排序,这可以帮助您 # Ascending order ships = Shipment.objects.filter(added_on__gte=("2016-10-22")).values

我尝试使用此查询,但未给出预期结果

ships = Shipment.objects.filter(added_on__gte=("2016-10-22")).annotate(sku_count=Count('sku')).order_by('sku_count')

如果您想按“sku”列分组并按其计数排序,这可以帮助您

# Ascending order
ships = Shipment.objects.filter(added_on__gte=("2016-10-22")).values("sku").annotate(sku_count=Count('sku')).order_by('sku_count')

# Descending order
ships = Shipment.objects.filter(added_on__gte=("2016-10-22")).values("sku").annotate(sku_count=Count('sku')).order_by('-sku_count')

你在上面的评论中说你想要这个东西。您应该能够做到这一点:

ships = Shipment.objects.filter(added_on__gte("2016-10-22")).annotate(sku_‌​count=Count('sku')).‌​order_by('sku_count'‌​)
唯一的问题是,对于相同的sku,您将有重复的行。请记住,当您使用“分组依据”时,您是通过多个值(装运实例)的公共值(sku)来聚合这些值

正如上面Vikram所说,您可以获得独特的SKU及其数量,如下所示:

Shipment.objects.filter(added_on__gte("2016-10-22")).values(‌​"sku").annotate(sku_‌​count=Count('sku')).‌​order_by('sku_count'‌​)

但为了获取特定的装运实例,您必须在此时按“sku”获取装运实例。HTH.

如果我没记错的话,你想按“sku”列分组并按其计数排序,是吗?
在[3]:ships=shipping.objects.filter(在gte(“2016-10-22”)中添加了值(“sku”)。值(“sku”)。注释(sku计数=计数('sku'))。在[5]中按订单('sku计数'):发货[0]出[5]:{'sku':u':u'bedcul 5rsdeal','sku计数:1}/code>而不是发货[0]={'sku':u'bedcll_5rsdeal','sku_count':1}这是我需要Shipping类的对象,这样我就可以继续进行进一步的操作。@TejasGaykar这里我们在做分组,按
sku
字段这就是为什么我们要得到摘要视图,如果你想要
Shipping
类数组的值像'bedclu 5rsdeal',那么你必须迭代
ships
列表,如下:-
对于船上装运:obj=Shipping.objects.filter(sku=ship['sku'])#您的代码
ships=Shipping.objects.filter(添加于gte=(“2016-10-22”)。注释(sku计数=计数('sku'))。订购人('sku计数')
我尝试了这个,它运行时没有错误,但它没有按sku计数排序。我在for循环中迭代了装运,如下
对于ship in ships:print ship.sku
输出如下
BKS_100616_5MCD samsung_LED599 BKS_2809_RBKwtch BKS_100616_5MCD samsung_LED599 BKS_100616_5MCD BKS_2809_RBKwtch samsung_LED599