code: def first_or_fail(self, columns=None):
          
          model = self.first(columns)
          if model is not None:
              return model
  
          raise ModelNotFound(self._parent.__class__)
docs: Execute the query and get the first result or raise an exception.
  
          :type columns: list
  
          :raises: ModelNotFound