magic-removal: Refs #1346 -- Added the production of 'mirror' entries in the m2m table for m2m relations to self.

git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2382 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Russell Keith-Magee 2006-02-24 10:28:46 +00:00
parent 492d2146da
commit 4f6d2a1d08
1 changed files with 17 additions and 0 deletions

View File

@ -300,15 +300,32 @@ class ReverseManyRelatedObjectsDescriptor(object):
def add(self, *objs, **kwargs): def add(self, *objs, **kwargs):
_add_m2m_items(self, superclass, rel_model, join_table, source_col_name, _add_m2m_items(self, superclass, rel_model, join_table, source_col_name,
target_col_name, instance._get_pk_val(), *objs, **kwargs) target_col_name, instance._get_pk_val(), *objs, **kwargs)
# If this is an m2m relation to self, add the mirror entry in the m2m table
if instance.__class__ == rel_model:
_add_m2m_items(self, superclass, rel_model, join_table, target_col_name,
source_col_name, instance._get_pk_val(), *objs, **kwargs)
add.alters_data = True add.alters_data = True
def remove(self, *objs): def remove(self, *objs):
_remove_m2m_items(rel_model, join_table, source_col_name, _remove_m2m_items(rel_model, join_table, source_col_name,
target_col_name, instance._get_pk_val(), *objs) target_col_name, instance._get_pk_val(), *objs)
# If this is an m2m relation to self, remove the mirror entry in the m2m table
if instance.__class__ == rel_model:
_remove_m2m_items(rel_model, join_table, target_col_name,
source_col_name, instance._get_pk_val(), *objs)
remove.alters_data = True remove.alters_data = True
def clear(self): def clear(self):
_clear_m2m_items(join_table, source_col_name, instance._get_pk_val()) _clear_m2m_items(join_table, source_col_name, instance._get_pk_val())
# If this is an m2m relation to self, clear the mirror entry in the m2m table
if instance.__class__ == rel_model:
_clear_m2m_items(join_table, target_col_name, instance._get_pk_val())
clear.alters_data = True clear.alters_data = True
manager = RelatedManager() manager = RelatedManager()