id,summary,reporter,owner,description,type,status,component,version,severity,resolution,keywords,cc,stage,has_patch,needs_docs,needs_tests,needs_better_patch,easy,ui_ux 4937,edit_inline for a reflexive m2m_intermediary,Nicola Larosa ,Adrian Holovaty,"This follows the [http://www.djangoproject.com/documentation/models/m2m_intermediary/ m2m_intermediary pattern], but with associations, not between two different models, but between pairs of instances of the *same* model. Given this Person model: {{{ class Person(models.Model): first_name = models.CharField(maxlength = 100) last_name = models.CharField(maxlength = 100) }}} and associating pairs of persons, while adding some data: {{{ class Association(models.Model): person = models.ForeignKey(Person, related_name='friend_of') associate = models.ForeignKey(Person, related_name='friends') some_data = models.IntegerField() }}} the admin interface for these models works correctly. Now, to be able to add Associations while editing Persons, add edit_inline and core to Association fields. When adding them to both !ForeignKey fields: {{{ class Association(models.Model): person = models.ForeignKey(Person, related_name='friend_of', core=True, edit_inline=models.TABULAR) associate = models.ForeignKey(Person, related_name='friends', core=True, edit_inline=models.TABULAR) dummy = models.IntegerField() }}} this error comes out: {{{ Traceback (most recent call last): File "".../django/template/__init__.py"" in render_node 754. result = node.render(context) File "".../django/template/defaulttags.py"" in render 134. nodelist.append(node.render(context)) File "".../django/contrib/admin/templatetags/admin_modify.py"" in render 171. bound_related_object = relation.bind( context['form'], original, bound_related_object_class) File "".../django/db/models/related.py"" in bind 129. return bound_related_object_class(self, field_mapping, original) File "".../django/contrib/admin/templatetags/admin_modify.py"" in __init__ 138. for (i,field_mapping) in self.field_mappings.items() ] File "".../django/oldforms/__init__.py"" in items 264. self.fill() File "".../django/oldforms/__init__.py"" in fill 283. field = self.parent_manipulator[full_field_name] File "".../django/oldforms/__init__.py"" in __getitem__ 28. raise KeyError, ""Field %s not found\n%s"" % ( field_name, repr(self.fields)) KeyError at /admin/person/add/ 'Field association.0.associate not found [FormField ""first_name"", FormField ""last_name"", FormField ""association.0.id"", FormField ""association.0.person"", FormField ""association.0.dummy"", FormField ""association.1.id"", FormField ""association.1.person"", FormField ""association.1.dummy"", FormField ""association.2.id"", FormField ""association.2.person"", FormField ""association.2.dummy"", FormField ""association.0.id"", FormField ""association.0.person"", FormField ""association.0.dummy"", FormField ""association.1.id"", FormField ""association.1.person"", FormField ""association.1.dummy"", FormField ""association.2.id"", FormField ""association.2.person"", FormField ""association.2.dummy""]' }}} When adding edit_inline and core to the first !ForeignKey field only: {{{ class Association(models.Model): person = models.ForeignKey(Person, related_name='friend_of', core=True, edit_inline=models.TABULAR) associate = models.ForeignKey(Person, related_name='friends') dummy = models.IntegerField() }}} this other error come out: {{{ Traceback (most recent call last): File "".../django/template/__init__.py"" in render_node 754. result = node.render(context) File "".../django/template/defaulttags.py"" in render 134. nodelist.append(node.render(context)) File "".../django/contrib/admin/templatetags/admin_modify.py"" in render 171. bound_related_object = relation.bind( context['form'], original, bound_related_object_class) File "".../django/db/models/related.py"" in bind 129. return bound_related_object_class(self, field_mapping, original) TypeError at /admin/person/add/ 'bool' object is not callable }}} ",,closed,contrib.admin,dev,,duplicate,edit_inline m2m_intermediary,,Unreviewed,0,0,0,0,0,0