docs: def count(self):
          """
          If result is True, then the count will process result set , if
          result if False, then only use condition to count
          """
          if self._group_by or self._join or self.distinct_field:
              return self.do_(self.get_query().limit(None).order_by(None).offset(None).alias().count()).scalar()
          else:
              return self.do_(self.get_query().with_only_columns([func.count()]).limit(None).order_by(None).offset(None)).scalar()