<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def find_or_create(self, constructor, props, *, comp=None):
 """Looks for a model taht matches the given dictionary constraints. If it is not found, a new model of the given type is created and saved to the database, then returned. """

    model = self.find_model(constructor, comp or props)
    if model is None:
      model = constructor(**props)
      self.insert_model(model)
    return model