示例#1
0
 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