'Returns objects based on simultaneous key and typeclass match.
Args:
oname (str): Object key to search for
otypeclass_path (str): Full Python path to tyepclass to search for
candidates (list, optional): Only match among the given list of candidates.
Returns:
matches (list): The matching objects.'

@returns_typeclass_list
def get_objs_with_key_and_typeclass(self, oname, otypeclass_path, candidates=None):

    cand_restriction = (((candidates is not None) and Q(pk__in=[_GA(obj, 'id') for obj in make_iter(candidates) if obj])) or Q())
    return self.filter((cand_restriction & Q(db_key__iexact=oname, db_typeclass_path__exact=otypeclass_path)))
