def from_table(self, table=None, fields='*', schema=None, **kwargs):
        """
        Adds a ``Table`` and any optional fields to the list of tables
        this query is selecting from.

        :type table: str or dict or :class:`Table <querybuilder.tables.Table>`
            or :class:`Query <querybuilder.query.Query>` or
            :class:`ModelBase <django:django.db.models.base.ModelBase>`
        :param table: The table to select fields from. This can be a string of the table
            name, a dict of {'alias': table}, a ``Table`` instance, a Query instance, or a
            django Model instance

        :type fields: str or tuple or list or Field
        :param fields: The fields to select from ``table``. Defaults to '*'. This can be
            a single field, a tuple of fields, or a list of fields. Each field can be a string
            or ``Field`` instance

        :type schema: str
        :param schema: This is not implemented, but it will be a string of the db schema name

        :param kwargs: Any additional parameters to be passed into the constructor of ``TableFactory``

        :return: self
        :rtype: :class:`Query <querybuilder.query.Query>`
        """
        # self.mark_dirty()

        self.tables.append(TableFactory(
            table=table,
            fields=fields,
            schema=schema,
            owner=self,
            **kwargs
        ))

        return self