<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_field_context(self, bound_field):
 """ Returns the context which is used when rendering a form field to HTML. The generated template context will contain the following variables: * form: `Form` instance * field: `BoundField` instance of the field * field_id: Field ID to use in `<label for="..">` * field_name: Name of the form field to render * errors: `ErrorList` instance with errors of the field * required: Boolean flag to signal if the field is required or not * label: The label text of the field * label_css_class: The optional label CSS class, might be `None` * help_text: Optional help text for the form field. Might be `None` * container_css_class: The CSS class for the field container. * widget_class_name: Lowercased version of the widget class name (e.g. 'textinput') * widget_input_type: `input_type` property of the widget instance, falls back to `widget_class_name` if not available. :return: Template context for field rendering. """

        widget = bound_field.field.widget
        widget_class_name = widget.__class__.__name__.lower()

        # Check if we have an overwritten id in widget attrs,
        # if not use auto_id of bound field.
        field_id = widget.attrs.get('id') or bound_field.auto_id
        if field_id:
            field_id = widget.id_for_label(field_id)

        return {
            'form': self,
            'field': bound_field,
            'field_id': field_id,
            'field_name': bound_field.name,
            'errors': bound_field.errors,
            'required': bound_field.field.required,
            'label': bound_field.label,
            'label_css_class': self.get_field_label_css_class(bound_field),
            'help_text': mark_safe(bound_field.help_text) if bound_field.help_text else None,
            'container_css_class': self.get_field_container_css_class(bound_field),
            'widget_class_name': widget_class_name,
            'widget_input_type': getattr(widget, 'input_type', None) or widget_class_name
        }