code: def human_friendly(self):
          
  
          if self._human_friendly is None:
              data = OrderedDict()
              last_field = None
              for rdn in self.chosen:
                  for type_val in rdn:
                      field_name = type_val['type'].human_friendly
                      last_field = field_name
                      if field_name in data:
                          data[field_name] = [data[field_name]]
                          data[field_name].append(type_val['value'])
                      else:
                          data[field_name] = type_val['value']
              to_join = []
              keys = data.keys()
              if last_field == 'Country':
                  keys = reversed(list(keys))
              for key in keys:
                  value = data[key]
                  native_value = self._recursive_humanize(value)
                  to_join.append('%s: %s' % (key, native_value))
  
              has_comma = False
              for element in to_join:
                  if element.find(',') != -1:
                      has_comma = True
                      break
  
              separator = ', ' if not has_comma else '; '
              self._human_friendly = separator.join(to_join[::-1])
  
          return self._human_friendly
docs: :return:
              A human-friendly unicode string containing the parts of the name