diff --git a/django/contrib/admin/widgets.py b/django/contrib/admin/widgets.py index 0f567bdbdde..f06c5e421c6 100644 --- a/django/contrib/admin/widgets.py +++ b/django/contrib/admin/widgets.py @@ -203,7 +203,7 @@ class RelatedFieldWidgetWrapper(forms.Widget): # Backwards compatible check for whether a user can add related # objects. if can_add_related is None: - can_add_related = rel_to in self.admin_site._registry + can_add_related = rel.to in admin_site._registry self.can_add_related = can_add_related # so we can check if the related object is registered with this AdminSite self.admin_site = admin_site diff --git a/tests/regressiontests/admin_widgets/models.py b/tests/regressiontests/admin_widgets/models.py index 6d51746041f..c187584996f 100644 --- a/tests/regressiontests/admin_widgets/models.py +++ b/tests/regressiontests/admin_widgets/models.py @@ -1,8 +1,9 @@ from django.db import models from django.contrib.auth.models import User -class MyFileField(models.FileField): - pass + +class MyFileField(models.FileField): + pass class Member(models.Model): name = models.CharField(max_length=100) diff --git a/tests/regressiontests/admin_widgets/tests.py b/tests/regressiontests/admin_widgets/tests.py index 4f9abb6b594..489013fea3d 100644 --- a/tests/regressiontests/admin_widgets/tests.py +++ b/tests/regressiontests/admin_widgets/tests.py @@ -6,9 +6,9 @@ from django import forms from django.conf import settings from django.contrib import admin from django.contrib.admin import widgets -from django.contrib.admin.widgets import FilteredSelectMultiple, AdminSplitDateTime -from django.contrib.admin.widgets import (AdminFileWidget, ForeignKeyRawIdWidget, - ManyToManyRawIdWidget) +from django.contrib.admin.widgets import (FilteredSelectMultiple, + AdminSplitDateTime, AdminFileWidget, ForeignKeyRawIdWidget, AdminRadioSelect, + RelatedFieldWidgetWrapper, ManyToManyRawIdWidget) from django.core.files.storage import default_storage from django.core.files.uploadedfile import SimpleUploadedFile from django.db.models import DateField @@ -31,7 +31,8 @@ class AdminFormfieldForDBFieldTests(TestCase): and verify that the returned formfield is appropriate. """ # Override any settings on the model admin - class MyModelAdmin(admin.ModelAdmin): pass + class MyModelAdmin(admin.ModelAdmin): + pass for k in admin_overrides: setattr(MyModelAdmin, k, admin_overrides[k]) @@ -314,3 +315,11 @@ class ManyToManyRawIdWidgetTest(DjangoTestCase): self.assertEqual(w._has_changed([1, 2], [u'1', u'2']), False) self.assertEqual(w._has_changed([1, 2], [u'1']), True) self.assertEqual(w._has_changed([1, 2], [u'1', u'3']), True) + +class RelatedFieldWidgetWrapperTests(DjangoTestCase): + def test_no_can_add_related(self): + rel = models.Inventory._meta.get_field('parent').rel + w = AdminRadioSelect() + # Used to fail with a name error. + w = RelatedFieldWidgetWrapper(w, rel, admin.site) + self.assertFalse(w.can_add_related)