Use fuzzy string matching to find similar model field names without consulting a synonyms list

    Returns:
      list: A list model field names (strings) sorted from most likely to least likely.
        [] If no similar field names could be found in the indicated model
        [None] If none found and and `pad_with_none` set

    Examples:

      >>> find_field_names(['date_time', 'title_prefix', 'sales'], model='WikiItem')
      ['date', 'model', 'net_sales']

def find_field_names(fields, model=DEFAULT_MODEL, app=DEFAULT_APP, score_cutoff=50, pad_with_none=False):
    """Use fuzzy string matching to find similar model field names without consulting a synonyms list

    Returns:
      list: A list model field names (strings) sorted from most likely to least likely.
        [] If no similar field names could be found in the indicated model
        [None] If none found and and `pad_with_none` set

    Examples:

      >>> find_field_names(['date_time', 'title_prefix', 'sales'], model='WikiItem')
      ['date', 'model', 'net_sales']

    """
    fields = util.listify(fields)
    model = get_model(model, app)
    available_field_names = model._meta.get_all_field_names()
    matched_fields = []
    for field_name in fields:
        match = fuzzy.extractOne(str(field_name), available_field_names)
        if match and match[1] is not None and match[1] >= score_cutoff:
            matched_fields += [match[0]]
        elif pad_with_none:
            matched_fields += [None]
    return matched_fields