PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Django avec Postgresql, la colonne doit apparaître dans la clause GROUP BY ou être utilisée dans une fonction d'agrégation

C'est un bogue connu dans Django>=1.8 et Django <2.0. Il a été corrigé dans Django 2.0. J'ai eu le même problème et je l'ai signalé dans la liste de diffusion django-users.

Ce qui s'est passé, c'est que Django a effectué quelques optimisations, notamment basées sur PostgreSQL. Dans PostgreSQL, vous n'avez besoin d'utiliser que les colonnes pk dans la clause GROUP BY, mais ce n'est que pour les tables. (La requête s'exécute plus rapidement si vous faites cela.) Vous ne pouvez pas avoir de PK dans une vue dans PostgreSQL, c'est pourquoi c'est un problème pour nous puisque nous utilisons des modèles non gérés couplés à des vues dans le backend.

Références :