code: def add_filter_function(self, name, new_function):
          
          self._filter_functions[name] = new_function
          self.invalidateFilter()
docs: name : hashable object
              The object to be used as the key for
              this filter function. Use this object
              to remove the filter function in the future.
              Typically this is a self descriptive string.
  
          new_function : function
              A new function which must take two arguments,
              the row to be tested and the ProxyModel's current
              filterString. The function should return True if
              the filter accepts the row, False otherwise.
  
              ex:
              model.add_filter_function(
                  'test_columns_1_and_2',
                  lambda r,s: (s in r[1] and s in r[2]))