Ticket #13432: one_to_one_multidb.diff
File one_to_one_multidb.diff, 2.4 KB (added by , 15 years ago) |
---|
-
django/db/models/fields/related.py
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index 1e016fa..1ba81af 100644
a b class SingleRelatedObjectDescriptor(object): 222 222 return getattr(instance, self.cache_name) 223 223 except AttributeError: 224 224 params = {'%s__pk' % self.related.field.name: instance._get_pk_val()} 225 db = router.db_for_read( instance.__class__, instance=instance)225 db = router.db_for_read(self.related.model, instance=instance) 226 226 rel_obj = self.related.model._base_manager.using(db).get(**params) 227 227 setattr(instance, self.cache_name, rel_obj) 228 228 return rel_obj -
tests/regressiontests/multiple_database/tests.py
diff --git a/tests/regressiontests/multiple_database/tests.py b/tests/regressiontests/multiple_database/tests.py index e4929f4..da8aac7 100644
a b class AuthTestCase(TestCase): 1310 1310 management.call_command('dumpdata', 'auth', format='json', database='other') 1311 1311 self.assertTrue('alice@example.com' in self.stdout.getvalue()) 1312 1312 1313 class OneToOneProfileRouter(object): 1314 def db_for_read(self, model, **hints): 1315 return self._db_for_model(model) 1316 1317 def db_for_write(self, model, **hints): 1318 return self._db_for_model(model) 1319 1320 def allow_syncdb(self, db, model): 1321 return db == self._db_for_model(model) 1322 1323 def _db_for_model(self, model): 1324 if model == UserProfile: 1325 return 'other' 1326 else: 1327 return 'default' 1328 1329 class OneToOneMultiDBTestCase(TestCase): 1330 multi_db = True 1331 1332 def setUp(self): 1333 self.old_routers = router.routers 1334 router.routers = [OneToOneProfileRouter()] 1335 1336 def tearDown(self): 1337 router.routers = self.old_routers 1338 1339 def test_one_to_one_multidb(self): 1340 alice = User.objects.create_user('alice', 'alice@example.com') 1341 alice_profile, created = UserProfile.objects.get_or_create(user=alice, flavor='chocolate') 1342 alice = User.objects.get(username='alice') 1343 try: 1344 alice.userprofile 1345 except UserProfile.DoesNotExist: 1346 self.fail("alice's userprofile should be found on the 'other' database") 1347 1313 1348 class UserProfileTestCase(TestCase): 1314 1349 def setUp(self): 1315 1350 self.old_auth_profile_module = getattr(settings, 'AUTH_PROFILE_MODULE', None)