Closed bkonkle closed 14 years ago
I created a test case for this here: http://github.com/bkonkle/django-balancer/commit/b68acef088181a0cdc4574cf2be7abf4783a72d7
Unfortunately, after more research it appears this is a hard and fast rule with QuerySet objects. If you're filtering a queryset by the results of another queryset, you'll need to explicitly use one of your databases for both querysets. I wasn't able to find a dynamic way around it.
For anyone else stumbling across this issue, a generic workaround is to import the global Django router (django.db.router) and call router.db_for_read() with one of the models in question. Then, pass that DB manually to both the queries.
Thanks for the workaround! I haven't touched this issue since 2010, but looking at it now it seems rather similar to #8. I think the request pinning feature that is being tested would help here, too.
Request pinning would definitely help here too. In a way it seems like a Django issue to me - shouldn't the query just be run on the database specified by the outer query, end of story?
Looks like it's related to the
allow_relation
method.