From e833595bc836f2c26c5acee54b8d083be07c6858 Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sat, 10 Mar 2007 07:37:08 +0000 Subject: [PATCH] An improved version of the change attempted in [4693]: retain backwards compatibility with hand-crafted oldforms without breaking edit_inline. git-svn-id: http://code.djangoproject.com/svn/django/trunk@4698 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/related.py | 2 +- django/oldforms/__init__.py | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/django/db/models/related.py b/django/db/models/related.py index 8c64b464ec..2c1dc5c516 100644 --- a/django/db/models/related.py +++ b/django/db/models/related.py @@ -16,7 +16,7 @@ class RelatedObject(object): self.opts = model._meta self.field = field self.edit_inline = field.rel.edit_inline - self.name = '%s_%s' % (self.opts.app_label, self.opts.module_name) + self.name = '%s:%s' % (self.opts.app_label, self.opts.module_name) self.var_name = self.opts.object_name.lower() def flatten_data(self, follow, obj=None): diff --git a/django/oldforms/__init__.py b/django/oldforms/__init__.py index decf0f7064..56101984f5 100644 --- a/django/oldforms/__init__.py +++ b/django/oldforms/__init__.py @@ -130,7 +130,9 @@ class FormWrapper(object): if self.edit_inline: self.fill_inline_collections() for inline_collection in self._inline_collections: - if inline_collection.name == key: + # The 'orig_name' comparison is for backwards compatibility + # with hand-crafted forms. + if inline_collection.name == key or (':' not in key and inline_collection.orig_name == key): return inline_collection raise KeyError, "Could not find Formfield or InlineObjectCollection named %r" % key @@ -226,6 +228,9 @@ class InlineObjectCollection(object): self.errors = errors self._collections = None self.name = rel_obj.name + # This is the name used prior to fixing #1839. Needs for backwards + # compatibility. + self.orig_name = rel_obj.opts.module_name def __len__(self): self.fill()