Je pense que je suis tombé dans le même problème. Ma requête fait plusieurs jointures, que le résultat brut peut ramener plusieurs lignes de la même clé primaire, chaque ligne est comptée par .count(), cependant lorsque vous appelez .all() un distinct est appliqué sur la clé primaire et uniquement unique lignes sont récupérées, que le nombre d'enregistrements sur la liste .all() est différent de .count().
Cela devrait être égal :
query.distinct().count() == query.all()
Cordialement