code: def get_field_info(self, field):
          
          field_info = OrderedDict()
          serializer = field.parent
  
          if isinstance(field, serializers.ManyRelatedField):
              field_info['type'] = self.type_lookup[field.child_relation]
          else:
              field_info['type'] = self.type_lookup[field]
  
          try:
              serializer_model = getattr(serializer.Meta, 'model')
              field_info['relationship_type'] = self.relation_type_lookup[
                  getattr(serializer_model, field.field_name)
              ]
          except KeyError:
              pass
          except AttributeError:
              pass
          else:
              field_info['relationship_resource'] = get_related_resource_type(field)
  
          field_info['required'] = getattr(field, 'required', False)
  
          attrs = [
              'read_only', 'write_only', 'label', 'help_text',
              'min_length', 'max_length',
              'min_value', 'max_value', 'initial'
          ]
  
          for attr in attrs:
              value = getattr(field, attr, None)
              if value is not None and value != '':
                  field_info[attr] = force_text(value, strings_only=True)
  
          if getattr(field, 'child', None):
              field_info['child'] = self.get_field_info(field.child)
          elif getattr(field, 'fields', None):
              field_info['children'] = self.get_serializer_info(field)
  
          if (
              not field_info.get('read_only') and
              not field_info.get('relationship_resource') and
              hasattr(field, 'choices')
          ):
              field_info['choices'] = [
                  {
                      'value': choice_value,
                      'display_name': force_text(choice_name, strings_only=True)
                  }
                  for choice_value, choice_name in field.choices.items()
              ]
  
          if hasattr(serializer, 'included_serializers') and 'relationship_resource' in field_info:
              field_info['allows_include'] = field.field_name in serializer.included_serializers
  
          return field_info
docs: Given an instance of a serializer field, return a dictionary
          of metadata about it.