Author: ramiro
Date: 2011-01-14 17:30:17 -0600 (Fri, 14 Jan 2011)
New Revision: 15207
Modified:
django/branches/releases/1.2.X/django/db/models/base.py
django/branches/releases/1.2.X/tests/regressiontests/multiple_database/tests.py
Log:
[1.2.X] Fixed #14948 -- Fixed a couple of cases where invalid model classes
were passed to the database router when collecting reverse foreign key and many
to many relationships. Thanks shell_dweller for the report and Harm Geerts for
the patch.
This also enhances tests added in r15186.
Code in SVN trunk doesn't suffer from this problem because it was refactored in
r14507.
Modified: django/branches/releases/1.2.X/django/db/models/base.py
===================================================================
--- django/branches/releases/1.2.X/django/db/models/base.py 2011-01-14
23:19:50 UTC (rev 15206)
+++ django/branches/releases/1.2.X/django/db/models/base.py 2011-01-14
23:30:17 UTC (rev 15207)
@@ -612,7 +612,7 @@
for related in self._meta.get_all_related_many_to_many_objects():
if related.field.rel.through:
- db = router.db_for_write(related.field.rel.through.__class__,
instance=self)
+ db = router.db_for_write(related.field.rel.through,
instance=self)
opts = related.field.rel.through._meta
reverse_field_name = related.field.m2m_reverse_field_name()
nullable = opts.get_field(reverse_field_name).null
@@ -622,7 +622,7 @@
for f in self._meta.many_to_many:
if f.rel.through:
- db = router.db_for_write(f.rel.through.__class__,
instance=self)
+ db = router.db_for_write(f.rel.through, instance=self)
opts = f.rel.through._meta
field_name = f.m2m_field_name()
nullable = opts.get_field(field_name).null
Modified:
django/branches/releases/1.2.X/tests/regressiontests/multiple_database/tests.py
===================================================================
---
django/branches/releases/1.2.X/tests/regressiontests/multiple_database/tests.py
2011-01-14 23:19:50 UTC (rev 15206)
+++
django/branches/releases/1.2.X/tests/regressiontests/multiple_database/tests.py
2011-01-14 23:30:17 UTC (rev 15207)
@@ -1739,7 +1739,7 @@
if not hasattr(model, '_meta'):
raise ValueError
-class RouterM2MThroughTestCase(TestCase):
+class RouterModelArgumentTestCase(TestCase):
multi_db = True
def setUp(self):
@@ -1749,7 +1749,7 @@
def tearDown(self):
router.routers = self.old_routers
- def test_m2m_through(self):
+ def test_m2m_collection(self):
b = Book.objects.create(title="Pro Django",
published=datetime.date(2008, 12, 16))
@@ -1760,3 +1760,13 @@
b.authors.remove(p)
# test clear
b.authors.clear()
+ # test setattr
+ b.authors = [p]
+ # Test M2M collection (_collect_sub_objects() in Django <= 1.2.X)
+ b.delete()
+
+ def test_foreignkey_collection(self):
+ person = Person.objects.create(name='Bob')
+ pet = Pet.objects.create(owner=person, name='Wart')
+ # Test related FK collection (_collect_sub_objects() in Django <=
1.2.X)
+ person.delete()
--
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.