Myślę, że mogłem wpaść w ten sam problem. Moje zapytanie wykonuje wiele sprzężeń, niż surowy wynik może przywrócić wiele wierszy tego samego klucza podstawowego, każdy wiersz jest liczony przez .count(), jednak po wywołaniu .all() na kluczu podstawowym jest stosowane odrębne i tylko unikalne pobierane są wiersze, to liczba rekordów na liście .all() jest inna niż .count().
To powinno być równe:
query.distinct().count() == query.all()
Pozdrawiam