Penso di essere caduto nello stesso problema. La mia query esegue più join, quindi il risultato non elaborato può riportare più righe della stessa chiave primaria, ogni riga viene conteggiata da .count(), tuttavia quando chiami .all() viene applicato un distinto sulla chiave primaria e solo univoco vengono recuperate le righe, quindi il numero di record nell'elenco .all() è diverso da .count().
Questo dovrebbe essere uguale:
query.distinct().count() == query.all()
Cordiali saluti