nodes: 0, module; 1, function_definition; 2, function_name:find_field_names; 3, parameters; 4, block; 5, identifier:fields; 6, default_parameter; 7, default_parameter; 8, default_parameter; 9, default_parameter; 10, expression_statement; 11, expression_statement; 12, expression_statement; 13, expression_statement; 14, expression_statement; 15, for_statement; 16, return_statement; 17, identifier:model; 18, identifier:DEFAULT_MODEL; 19, identifier:app; 20, identifier:DEFAULT_APP; 21, identifier:score_cutoff; 22, integer:50; 23, identifier:pad_with_none; 24, False; 25, comment:"""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']
  
      """; 26, assignment; 27, assignment; 28, assignment; 29, assignment; 30, identifier:field_name; 31, identifier:fields; 32, block; 33, identifier:matched_fields; 34, identifier:fields; 35, call; 36, identifier:model; 37, call; 38, identifier:available_field_names; 39, call; 40, identifier:matched_fields; 41, list; 42, expression_statement; 43, if_statement; 44, attribute; 45, argument_list; 46, identifier:get_model; 47, argument_list; 48, attribute; 49, argument_list; 50, assignment; 51, boolean_operator; 52, block; 53, elif_clause; 54, identifier:util; 55, identifier:listify; 56, identifier:fields; 57, identifier:model; 58, identifier:app; 59, attribute; 60, identifier:get_all_field_names; 61, identifier:match; 62, call; 63, boolean_operator; 64, comparison_operator:match[1] >= score_cutoff; 65, expression_statement; 66, identifier:pad_with_none; 67, block; 68, identifier:model; 69, identifier:_meta; 70, attribute; 71, argument_list; 72, identifier:match; 73, comparison_operator:match[1] is not None; 74, subscript; 75, identifier:score_cutoff; 76, augmented_assignment; 77, expression_statement; 78, identifier:fuzzy; 79, identifier:extractOne; 80, call; 81, identifier:available_field_names; 82, subscript; 83, None; 84, identifier:match; 85, integer:1; 86, identifier:matched_fields; 87, list; 88, augmented_assignment; 89, identifier:str; 90, argument_list; 91, identifier:match; 92, integer:1; 93, subscript; 94, identifier:matched_fields; 95, list; 96, identifier:field_name; 97, identifier:match; 98, integer:0; 99, None
code: 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