2016-10-22 129 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 ' –

相關問題