<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def resolve_widget(self, field):
 """ Given a Field or BoundField, return widget instance. Todo: Raise an exception if given field object does not have a widget. Arguments: field (Field or BoundField):
 A field instance. Returns: django.forms.widgets.Widget: Retrieved widget from given field. """

        # When filter is used within template we have to reach the field
        # instance through the BoundField.
        if hasattr(field, 'field'):
            widget = field.field.widget
        # When used out of template, we have a direct field instance
        else:
            widget = field.widget

        return widget