diff --git a/django/contrib/contenttypes/generic.py b/django/contrib/contenttypes/generic.py
index 40c3336..a8f5de9 100644
--- a/django/contrib/contenttypes/generic.py
+++ b/django/contrib/contenttypes/generic.py
@@ -12,6 +12,7 @@ from django.forms import ModelForm
 from django.forms.models import BaseModelFormSet, modelformset_factory, save_instance
 from django.contrib.admin.options import InlineModelAdmin, flatten_fieldsets
 from django.utils.encoding import smart_unicode
+from django.utils.functional import curry
 
 class GenericForeignKey(object):
     """
@@ -391,7 +392,7 @@ class GenericInlineModelAdmin(InlineModelAdmin):
             "ct_field": self.ct_field,
             "fk_field": self.ct_fk_field,
             "form": self.form,
-            "formfield_callback": self.formfield_for_dbfield,
+            "formfield_callback": curry(self.formfield_for_dbfield, request=request),
             "formset": self.formset,
             "extra": self.extra,
             "can_delete": self.can_delete,
diff --git a/tests/regressiontests/generic_inline_admin/models.py b/tests/regressiontests/generic_inline_admin/models.py
index 329c487..144d4ab 100644
--- a/tests/regressiontests/generic_inline_admin/models.py
+++ b/tests/regressiontests/generic_inline_admin/models.py
@@ -106,3 +106,32 @@ class MediaPermanentInline(generic.GenericTabularInline):
     can_delete = False
 
 admin.site.register(EpisodePermanent, inlines=[MediaPermanentInline])
+
+
+#
+# Generic inline with additional model
+#
+
+class ModelC(models.Model):
+    relation_b = models.ForeignKey('ModelB')
+
+    tagged_object = generic.GenericForeignKey()
+    content_type = models.ForeignKey(ContentType)
+    object_id = models.PositiveIntegerField()
+
+class ModelA(models.Model):
+    pass
+
+class ModelB(models.Model):
+    pass
+
+
+class ModelCInline(generic.GenericTabularInline):
+    model = ModelC
+
+
+class ModelAAdmin(admin.ModelAdmin):
+    inlines = [ModelCInline]
+
+admin.site.register(ModelA, ModelAAdmin)
+admin.site.register(ModelB)
diff --git a/tests/regressiontests/generic_inline_admin/tests.py b/tests/regressiontests/generic_inline_admin/tests.py
index 0626699..6b32761 100644
--- a/tests/regressiontests/generic_inline_admin/tests.py
+++ b/tests/regressiontests/generic_inline_admin/tests.py
@@ -203,6 +203,23 @@ class GenericInlineAdminWithUniqueTogetherTest(TestCase):
         response = self.client.post('/generic_inline_admin/admin/generic_inline_admin/contact/add/', post_data)
         self.failUnlessEqual(response.status_code, 302) # redirect somewhere
 
+class GenericInlineAdminWithForeignKeyTest(TestCase):
+    fixtures = ['users.xml']
+
+    def setUp(self):
+        self.client.login(username='super', password='secret')
+
+    def tearDown(self):
+        self.client.logout()
+
+    def testBasicAddGet(self):
+        """
+        Regression test for #14283
+        """
+
+        response = self.client.get('/generic_inline_admin/admin/generic_inline_admin/modela/add/')
+        self.failUnlessEqual(response.status_code, 200)
+
 class NoInlineDeletionTest(TestCase):
     def test_no_deletion(self):
         fake_site = object()
