2016-10-22 151 views
0

我试过使用这个查询,但没有给出预期的结果。如何在django queryset中进行排序?

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

如果我没有错,你想用'sku'列进行分组并按其计数进行排序吗? –

回答

0

如果您想通过'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') 
+0

'In [3]:ships = Shipment.objects.filter(added_on__gte(“2016-10-22”))。values(“sku”)。annotate(sku_count = Count('sku'))。order_by('sku_count ') In [5]:船舶[0] Out [5]:{'sku':u'bedcll_5rsdeal','sku_count':1} ' 替代**船舶[0] = {'sku ':u'bedcll_5rsdeal','sku_count':1} **我需要Shipment类的对象,以便我可以继续进一步的操作。 –

+0

@TejasGaykar在这里,我们通过'sku'字段进行分组,这就是为什么我们要得到摘要视图,如果你想'Shipment'类数组有如'bedcll_5rsdeal'的值,那么你必须迭代像这样的船名单: - '在船舶船: \t OBJ = Shipment.objects.filter(SKU =船[ 'SKU']) \t #your代码'' –

0

你在上面的评论中说过你想要的对象。你应该可以这样做:

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

唯一的问题是你将有相同的sku重复行。请记住,当您使用'group by'时,您将通过它们共同的值(sku)汇总多个值(Shipment实例)。

所以像维克拉姆上面说的,你可以得到独特的SKU和他们的计数是这样的:

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

但为了得到具体出货的情况下,你必须在获取由“SKU”出货情况那一点。 HTH。

+0

船舶= Shipment.objects.filter(added_on__gte =(“2016-我尝试了这个,它没有错误地运行,但它没有按sku计数排序 我重复了运输for循环如下 '用于船舶的船舶:print ship.sku' 和输出就为如下 'BKS_100616_5MCD samsung_LED599 BKS_2809_RBKwtch BKS_100616_5MCD samsung_LED599 samsung_LED599 BKS_100616_5MCD BKS_2809_RBKwtch samsung_LED599 ' –

相关问题