#25615: multidb Relation fields do not support nested lookups -------------------------------------+------------------------------------- Reporter: gerdkoetje | Owner: nobody Type: Bug | Status: closed Component: Database layer | Version: 1.8 (models, ORM) | Severity: Normal | Resolution: needsinfo Keywords: | Triage Stage: | Unreviewed Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 -------------------------------------+-------------------------------------
Old description: > Does anyone know why i can't do any relation lookups on any database > other then the default database in 1.8.5 this worked fine in 1.6.1. It > keeps telling me: `Relation fields do not support nested lookups`. > > for example on > `adds = > ProfielenFlirts.objects.filter(voor__user__profielenuserprofile__fictief=True).filter(Q(antwoord='') > | Q(antwoord__isnull=True)).count()` > > ProfielenFlirts is a non default database, the relation lookup is in the > same database do. > > my router > {{{ > class DatingRouter(object): > def db_for_read(self, model, **hints): > if model._meta.app_label == 'datingmodels': > return 'dating' > return 'default' > > def db_for_write(self, model, **hints): > if model._meta.app_label == 'datingmodels': > return 'dating' > return 'default' > > def allow_relation(self, obj1, obj2, **hints): > if obj1._meta.app_label == 'datingmodels' and > obj2._meta.app_label == 'datingmodels': > return True > elif 'datingmodels' not in [obj1._meta.app_label, > obj2._meta.app_label]: > return True > return False > > def allow_syncdb(self, db, model): > if db == 'dating' or model._meta.app_label == "datingmodels": > return False # we're not using syncdb on our legacy database > else: # but all other models/databases are fine > return True > }}} New description: He all, Does anyone know why i can't do any relation lookups on any database other then the default database in 1.8.5 this worked fine in 1.6.1 it keeps trowing me: Relation fields do not support nested lookups for example on adds = ProfielenFlirts.objects.filter(voor__user__profielenuserprofile__fictief=True).filter(Q(antwoord='') | Q(antwoord__isnull=True)).count() ProfielenFlirts is a non default database, the relation lookup is in the same database do. my router class DatingRouter(object): def db_for_read(self, model, **hints): if model._meta.app_label == 'datingmodels': return 'dating' return 'default' def db_for_write(self, model, **hints): if model._meta.app_label == 'datingmodels': return 'dating' return 'default' def allow_relation(self, obj1, obj2, **hints): if obj1._meta.app_label == 'datingmodels' and obj2._meta.app_label == 'datingmodels': return True elif 'datingmodels' not in [obj1._meta.app_label, obj2._meta.app_label]: return True return False def allow_syncdb(self, db, model): if db == 'dating' or model._meta.app_label == "datingmodels": return False # we're not using syncdb on our legacy database else: # but all other models/databases are fine return True any help would be appriciated -- Comment (by gerdkoetje): test project proving this issue https://github.com/gerdkoetje/dualdbtest -- Ticket URL: <https://code.djangoproject.com/ticket/25615#comment:4> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/068.4d6b356cd950eda2e2cee3ab3aa4ded2%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.