def formfield_for_dbfield(self, db_field, **kwargs): formfield = super(RelatedWidgetWrapperBase, self).formfield_for_dbfield(db_field, **kwargs) if (formfield and isinstance(formfield.widget, admin.widgets.RelatedFieldWidgetWrapper) and not isinstance(formfield.widget.widget, SelectMultiple)): request = kwargs.pop('request', None) related_modeladmin = self.admin_site._registry.get(db_field.rel.to) can_change_related = bool(related_modeladmin and related_modeladmin.has_change_permission(request)) can_delete_related = bool(related_modeladmin and related_modeladmin.has_delete_permission(request)) widget = RelatedFieldWidgetWrapper.from_contrib_wrapper(formfield.widget, can_change_related, can_delete_related) formfield.widget = widget return formfield