我正在將代碼從Django 1.6移動到1.9。 在1.6我有這個代碼Django 1.9中的query.group_by
models.py
class MyReport(models.Model):
group_id = models.PositiveIntegerField(blank=False, null=False)
views.py
query = MyReport.objects.filter(owner=request.user).query
query.group_by = ['group_id']
entries = QuerySet(query=query, model=MyReport)
該查詢將返回一個對象爲每個 'GROUP_ID';由於我使用它的方式,任何帶有group_id的表格行都可以作爲代表。
隨着1.9此代碼已損壞。上述第二行後的查詢是:
SELECT "reports_myreport"."group_id", ... etc FROM "reports_myreport" WHERE "reports_myreport"."owner_id" = 1 GROUP BY "reports_myreport"."group_id", "reports_report"."otherfield", ...
基本上它列出所有表中的字段組中由子句,使得查詢返回整個表。
雖然曾經在調試器中我看到
query.group_by = ['group_by']
它看起來並不像query.group_by是在1.9的方法也不限於1.7-1.9的變化記錄表明,事情發生了轉變。
有沒有更好的方法 - 不取決於內部的Django的東西 - 我可以用於我的查詢?
任何方式來解決我當前的查詢?
什麼是與您的MyReport相關的'group_id'?你能向你的模型展示相關的部分嗎? – Sayse
@Sayse'group_id'是模式中的一個簡單字段。我用相關的行編輯了這個問題 – mibm
好吧,我期待它是一個外鍵......你在尋找MyReport.objects.filter(owner = request.user).distinct('group_id')'? – Sayse