Я перемещаю код с Django 1.6 до 1.9. В 1.6 я имел этот кодquery.group_by in Django 1.9
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", ...
В основном это список всех полой таблицы в группе по статье, делая запрос возвращал всю таблицу.
Ever, хотя в отладчике я вижу
query.group_by = ['group_by']
Он не похож на query.group_by является методом в версии 1.9 и не делает переключающий журналы 1,7-1,9 предполагает, что что-то изменилось.
Есть ли лучший способ - не в зависимости от внутренних вещей Django - я могу использовать для моего запроса?
Любой способ исправить мой текущий запрос?
Что такое 'group_id' в отношении вашего' MyReport'? Не могли бы вы показать соответствующие части своих моделей? – Sayse
@Sayse 'group_id '- это простое поле в режиме. Я отредактировал вопрос в соответствующих строках – mibm
А я, конечно, ожидал, что это внешний ключ ... вы ищете 'MyReport.objects.filter (owner = request.user) .distinct ('group_id')'? – Sayse