docs: def make_echoicefield(echoices, *args, klass_name=None, **kwargs):
      """
      Construct a subclass of a derived `models.Field` specific to the type of the `EChoice` values.
  
      Parameters
      ----------
      echoices : subclass of EChoice
      args
          Passed to the derived `models.Field`
      klass_name : str
          Give a specific name to the returned class.
          By default for Django < 1.9, the name will be 'EChoiceField'.
          By default for Django >= 1.9, the name will be the name of the enum appended with 'Field'.
      kwargs
          Passed to the derived `models.Field`
  
      Returns
      -------
      EChoiceField
          For Django>=1.9, the exact name of the returned Field is based on the name of the `echoices` with a suffixed
          'Field'. For older Django, the returned name of the class is `EChoiceField`.
  
      """
      assert issubclass(echoices, EChoice)
      value_type = echoices.__getvaluetype__()
      if value_type is str:
          cls_ = models.CharField
      elif value_type is int:
          cls_ = models.IntegerField
      elif value_type is float:
          cls_ = models.FloatField
      elif value_type is bool:
          cls_ = models.BooleanField
      else:
          raise NotImplementedError("Please open an issue if you wish your value type to be supported: "
                                    "https://github.com/mbourqui/django-echoices/issues/new")
      if klass_name and StrictVersion(django_version()) < StrictVersion('1.9.0'):
          warnings.warn("Django < 1.9 throws an 'ImportError' if the class name is not defined in the module. "
                        "The provided klass_name will be replaced by {}".format(EChoiceField.__name__), RuntimeWarning)
      klass_name = EChoiceField.__name__ if StrictVersion(django_version()) < StrictVersion('1.9.0') else \
          klass_name if klass_name else "{}Field".format(echoices.__name__)
      d = dict(cls_.__dict__)
      d.update(dict(EChoiceField.__dict__))
      return type(klass_name, (cls_,), d)(echoices, *args, **kwargs)