Author: jkocherhans
Date: 2009-03-31 15:39:54 -0500 (Tue, 31 Mar 2009)
New Revision: 10287
Modified:
django/branches/releases/1.0.X/
django/branches/releases/1.0.X/django/forms/models.py
django/branches/releases/1.0.X/tests/regressiontests/admin_views/models.py
django/branches/releases/1.0.X/tests/regressiontests/admin_views/tests.py
Log:
[1.0.X] Fixed #9863. A ForeignKey with editable=False to the parent in an
inline no longer raises an exception. Thanks to keithb for the test case and
Alex Gaynor for the patch. Backport of r10239 from trunk.
Property changes on: django/branches/releases/1.0.X
___________________________________________________________________
Name: svnmerge-integrated
-
/django/trunk:1-9097,9099-9102,9104-9109,9111,9113-9144,9146-9151,9153-9156,9158-9159,9161-9187,9189-9247,9249-9262,9264-9277,9279-9298,9301-9302,9305-9331,9333-9343,9345,9347,9350-9352,9355-9396,9399-9462,9466-9469,9471-9488,9491-9526,9529,9533-9536,9539-9550,9556-9557,9559-9560,9562-9568,9570-9591,9595-9619,9621-9624,9626-9636,9638-9642,9644-9645,9647-9689,9691-9699,9703-9706,9709-9713,9716-9723,9725-9726,9730-9738,9740-9741,9750-9751,9757-9758,9761-9762,9767-9768,9770-9780,9782-9784,9789-9790,9793-9798,9801-9802,9806-9807,9809-9813,9821-9837,9842-9843,9847-9859,9861,9863-9875,9877-9881,9883-9887,9899-9903,9906-9909,9912,9914,9916-9917,9919-9920,9922-9927,9929,9931-9937,9939,9942-9943,9945-9950,9953-9954,9956-9962,9966-9977,9979-9984,9986-9988,9990,9992,9994,9996-9998,10003,10007,10009,10013,10015,10017,10022,10024,10031,10036-10037,10040,10049,10051,10054,10056-10058,10071,10073-10074,10078,10104,10125,10136,10139,10143,10145-10147,10149-10152,10170,10175,10193,10240
+
/django/trunk:1-9097,9099-9102,9104-9109,9111,9113-9144,9146-9151,9153-9156,9158-9159,9161-9187,9189-9247,9249-9262,9264-9277,9279-9298,9301-9302,9305-9331,9333-9343,9345,9347,9350-9352,9355-9396,9399-9462,9466-9469,9471-9488,9491-9526,9529,9533-9536,9539-9550,9556-9557,9559-9560,9562-9568,9570-9591,9595-9619,9621-9624,9626-9636,9638-9642,9644-9645,9647-9689,9691-9699,9703-9706,9709-9713,9716-9723,9725-9726,9730-9738,9740-9741,9750-9751,9757-9758,9761-9762,9767-9768,9770-9780,9782-9784,9789-9790,9793-9798,9801-9802,9806-9807,9809-9813,9821-9837,9842-9843,9847-9859,9861,9863-9875,9877-9881,9883-9887,9899-9903,9906-9909,9912,9914,9916-9917,9919-9920,9922-9927,9929,9931-9937,9939,9942-9943,9945-9950,9953-9954,9956-9962,9966-9977,9979-9984,9986-9988,9990,9992,9994,9996-9998,10003,10007,10009,10013,10015,10017,10022,10024,10031,10036-10037,10040,10049,10051,10054,10056-10058,10071,10073-10074,10078,10104,10125,10136,10139,10143,10145-10147,10149-10152,10170,10175,10193,10239-10240
Modified: django/branches/releases/1.0.X/django/forms/models.py
===================================================================
--- django/branches/releases/1.0.X/django/forms/models.py 2009-03-31
20:30:05 UTC (rev 10286)
+++ django/branches/releases/1.0.X/django/forms/models.py 2009-03-31
20:39:54 UTC (rev 10287)
@@ -519,7 +519,11 @@
if self._pk_field == self.fk:
form.fields[self._pk_field.name] =
InlineForeignKeyField(self.instance, pk_field=True)
else:
- form.fields[self.fk.name] = InlineForeignKeyField(self.instance,
label=form.fields[self.fk.name].label)
+ # The foreign key field might not be on the form, so we poke at the
+ # Model field to get the label, since we need that for error
messages.
+ form.fields[self.fk.name] = InlineForeignKeyField(self.instance,
+ label=getattr(form.fields.get(self.fk.name), 'label',
capfirst(self.fk.verbose_name))
+ )
def _get_foreign_key(parent_model, model, fk_name=None):
"""
Modified:
django/branches/releases/1.0.X/tests/regressiontests/admin_views/models.py
===================================================================
--- django/branches/releases/1.0.X/tests/regressiontests/admin_views/models.py
2009-03-31 20:30:05 UTC (rev 10286)
+++ django/branches/releases/1.0.X/tests/regressiontests/admin_views/models.py
2009-03-31 20:39:54 UTC (rev 10287)
@@ -177,6 +177,20 @@
BarAccountAdmin
)
+class Parent(models.Model):
+ name = models.CharField(max_length=128)
+
+class Child(models.Model):
+ parent = models.ForeignKey(Parent, editable=False)
+ name = models.CharField(max_length=30, blank=True)
+
+class ChildInline(admin.StackedInline):
+ model = Child
+
+class ParentAdmin(admin.ModelAdmin):
+ model = Parent
+ inlines = [ChildInline]
+
admin.site.register(Article, ArticleAdmin)
admin.site.register(CustomArticle, CustomArticleAdmin)
admin.site.register(Section, inlines=[ArticleInline])
@@ -184,6 +198,7 @@
admin.site.register(Color)
admin.site.register(Thing, ThingAdmin)
admin.site.register(Persona, PersonaAdmin)
+admin.site.register(Parent, ParentAdmin)
# We intentionally register Promo and ChapterXtra1 but not Chapter nor
ChapterXtra2.
# That way we cover all four cases:
Modified:
django/branches/releases/1.0.X/tests/regressiontests/admin_views/tests.py
===================================================================
--- django/branches/releases/1.0.X/tests/regressiontests/admin_views/tests.py
2009-03-31 20:30:05 UTC (rev 10286)
+++ django/branches/releases/1.0.X/tests/regressiontests/admin_views/tests.py
2009-03-31 20:39:54 UTC (rev 10287)
@@ -819,3 +819,20 @@
self.failUnlessEqual(FooAccount.objects.all()[0].username, "%s-1" %
foo_user)
self.failUnlessEqual(BarAccount.objects.all()[0].username, "%s-1" %
bar_user)
self.failUnlessEqual(Persona.objects.all()[0].accounts.count(), 2)
+
+class TestInlineNotEditable(TestCase):
+ fixtures = ['admin-views-users.xml']
+
+ def setUp(self):
+ result = self.client.login(username='super', password='secret')
+ self.failUnlessEqual(result, True)
+
+ def tearDown(self):
+ self.client.logout()
+
+ def test(self):
+ """
+ InlineModelAdmin broken?
+ """
+ response = self.client.get('/test_admin/admin/admin_views/parent/add/')
+ self.failUnlessEqual(response.status_code, 200)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---