diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index ed41c7f..99b7323 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -105,9 +105,10 @@ class BaseModelAdmin(object):
                     
         # If we've got overrides for the formfield defined, use 'em. **kwargs
         # passed to formfield_for_dbfield override the defaults.
-        if db_field.__class__ in self.formfield_overrides:
-            kwargs = dict(self.formfield_overrides[db_field.__class__], **kwargs)
-            return db_field.formfield(**kwargs)
+        for klass in db_field.__class__.mro():
+            if klass in self.formfield_overrides:
+                kwargs = dict(self.formfield_overrides[klass], **kwargs)
+                return db_field.formfield(**kwargs)
                         
         # For any other type of field, just call its formfield() method.
         return db_field.formfield(**kwargs)
