auth.Message ignores directions from database router
|Reported by:||chris@…||Owned by:||nobody|
|Component:||Database layer (models, ORM)||Version:||1.2-beta|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
I'm using django-multidb-router from here: http://github.com/jbalogh/django-multidb-router With two database definitions, a read_only_user and a read_write_user (with the intentions of having multiple read-only definitions).
As far as I can tell, all reads get directed to the read_only_user and all writes get detected to read_write_user. That is, until contrib.Admin tries to create a new user message for a save() which for tries to write with the read_only_user and fails.
When overriding auth.Message.save() with an empty function, the admin interface resumes working as expected, with reads and writes being sent to the appropriate databases.
From what I guess by looking at the traceback, RelatedManager is overriding get_query_set() to set the query-set's DB. But when the create() call gets down to models.query.QuerySet.create(), obj.save() (line 350) is called, and forces using to self.db, negating any direction from the Router.
Change History (3)
comment:1 Changed 4 years ago by russellm
- milestone set to 1.2
- Needs documentation unset
- Needs tests unset
- Patch needs improvement unset
- Triage Stage changed from Unreviewed to Accepted