2017-04-12 25 views
0

我想從這個查詢選擇distint,以顯示「月」如何在django orm extra中創建獨特的?

cekbulan = Transaksi.objects.filter(tanggal__range=["2016-07-01", "2017-06-30"], unit='03').extra(
    select={'month': "month(date)"}).distinct() 

這是我的模板

<table> 
     {% for bulanmaxs in cekbulan %} 
      <tr> 
       <td>{{ bulanmaxs.month }}</td> 
      </tr> 
     {% endfor %} 
    </table> 

,但它沒有工作,不同的價值,它仍然列出所有日期從我的數據庫,如何解決它?

+0

查找註釋的文檔(在您的案例中的日期註釋)。 –

+0

我認爲annotate不支持截然不同的@AndreyShipilov – Gusan

+0

您可以添加distinct = true作爲參數。另外閱讀有關distinct(),也許這將有助於理解。 –

回答

1

從文檔https://docs.djangoproject.com/en/1.10/ref/models/querysets/#distinct

在PostgreSQL只,你可以以指定DISTINCT應適用於哪些字段的名稱傳遞位置參數(*字段)。這轉換爲SELECT DISTINCT ON SQL查詢。這是區別。對於正常的distinct()調用,數據庫在確定哪些行是不同的時候會比較每行中的每個字段。對於具有指定字段名稱的distinct()調用,數據庫將僅比較指定的字段名稱。

如果您只希望在模板中使用不同的月份,則可以指定您只需要幾個月,然後對其執行不同的操作。

cekbulan = Transaksi.objects.filter(tanggal__range=["2016-07-01", "2017-06-30"], unit='03').extra(select={'month': "month(date)"}).values('month').distinct() 
+0

謝謝@anupsabraham – Gusan