Return the dynamic field within this class that match the given name.
        Keep an internal cache to speed up future calls wieh same field name.
        (The cache store the field for each individual class and subclasses, to
        keep the link between a field and its direct model)

def _get_dynamic_field_for(cls, field_name):
        """
        Return the dynamic field within this class that match the given name.
        Keep an internal cache to speed up future calls wieh same field name.
        (The cache store the field for each individual class and subclasses, to
        keep the link between a field and its direct model)
        """
        from .fields import DynamicFieldMixin  # here to avoid circular import

        if cls not in ModelWithDynamicFieldMixin._dynamic_fields_cache:
            ModelWithDynamicFieldMixin._dynamic_fields_cache[cls] = {}

        if field_name not in ModelWithDynamicFieldMixin._dynamic_fields_cache[cls]:
            ModelWithDynamicFieldMixin._dynamic_fields_cache[cls][field_name] = None
            for a_field_name in cls._fields:
                field = cls.get_field(a_field_name)
                if isinstance(field, DynamicFieldMixin) and field._accept_name(field_name):
                    ModelWithDynamicFieldMixin._dynamic_fields_cache[cls][field_name] = field
                    break

        field = ModelWithDynamicFieldMixin._dynamic_fields_cache[cls][field_name]

        if field is None:
            raise ValueError('No DynamicField matching "%s"' % field_name)

        return field