Makes sure we fetched the fields, and populate them if not.

def ensure_fields(self, fields, force_refetch=False):
        """ Makes sure we fetched the fields, and populate them if not. """

        # We fetched with fields=None, we should have fetched them all
        if self._fetched_fields is None or self._initialized_with_doc:
            return

        if force_refetch:
            missing_fields = fields
        else:
            missing_fields = [f for f in fields if f not in self._fetched_fields]

        if len(missing_fields) == 0:
            return

        if "_id" not in self:
            raise Exception("Can't ensure_fields because _id is missing")

        self.refetch_fields(missing_fields)