﻿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
23706	Accessing related object of object from not default DB, queries default DB	Deroky	nobody	"When having multiple databases configured (like below), with different database models (apps migrated) in each (let's say you have the app CustomAuth in default and the app International in clientdb (models sampled below), if you get a Client and then try to retrieve its related object you get this error (Django is trying to resolve the get using default db instead of the db of the instance that you have): 

{{{
>>> c=Client.objects.using('clientdb').get(pk=1)
<Client: Deroky>
>>> c.__dict__['_state'].__dict__
{'adding': False, 'db': 'clientdb'}
>>> c.currency
Traceback (most recent call last):
  File ""<console>"", line 1, in <module>
  File ""/opt/env/ooint_platform/local/lib/python2.7/site-packages/django/db/models/fields/related.py"", line 320, in __get__
    rel_obj = qs.get()
  File ""/opt/env/ooint_platform/local/lib/python2.7/site-packages/django/db/models/query.py"", line 301, in get
    num = len(clone)
  File ""/opt/env/ooint_platform/local/lib/python2.7/site-packages/django/db/models/query.py"", line 77, in __len__
    self._fetch_all()
  File ""/opt/env/ooint_platform/local/lib/python2.7/site-packages/django/db/models/query.py"", line 854, in _fetch_all
    self._result_cache = list(self.iterator())
  File ""/opt/env/ooint_platform/local/lib/python2.7/site-packages/django/db/models/query.py"", line 220, in iterator
    for row in compiler.results_iter():
  File ""/opt/env/ooint_platform/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py"", line 713, in results_iter
    for rows in self.execute_sql(MULTI):
  File ""/opt/env/ooint_platform/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py"", line 786, in execute_sql
    cursor.execute(sql, params)
  File ""/opt/env/ooint_platform/local/lib/python2.7/site-packages/django/db/backends/util.py"", line 69, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File ""/opt/env/ooint_platform/local/lib/python2.7/site-packages/django/db/backends/util.py"", line 53, in execute
    return self.cursor.execute(sql, params)
  File ""/opt/env/ooint_platform/local/lib/python2.7/site-packages/django/db/utils.py"", line 99, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File ""/opt/env/ooint_platform/local/lib/python2.7/site-packages/django/db/backends/util.py"", line 53, in execute
    return self.cursor.execute(sql, params)
ProgrammingError: relation ""international_currency"" does not exist
LINE 1: ...y"".""id"", ""international_currency"".""currency"" FROM ""internati...
}}}



Config:


{{{
DATABASES = {
	'default': {
		'ENGINE':'django.db.backends.postgresql_psycopg2',
		'NAME':'centraldb',
		'USER':'admin',
		'PASSWORD':'',
		'PORT':5432,
		'HOST':'sql-node1',
	},
	'clientdb': {
		'ENGINE':'django.db.backends.postgresql_psycopg2',
		'NAME':'clientdb',
		'USER':'admin',
		'PASSWORD':'',
		'PORT':5432,
		'HOST':'sql-node1',
	}
}

}}}

App CustomAuth models:


{{{
(not relevant, but have no Currency model)
}}}


App International models:


{{{
class Client(models.Model):
	client = models.CharField(max_length=52,unique=True,verbose_name=_('Client'))
        currency = models.ForeignKey(Currency,verbose_name = _('From Currency'))
	
	def __unicode__(self):
		return self.client

class Currency(models.Model):
	currency = models.CharField(unique=True,max_length=255,verbose_name='Currency')

	def __unicode__(self):
		return self.currency
}}}

"	Bug	closed	Database layer (models, ORM)	1.6	Normal	needsinfo		Deroky	Unreviewed	0	0	0	0	0	0
