﻿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
30690	get_or_create() ignores database router's db_for_read() method	Maciej Olko	nobody	"{{{
class Foo(models.Model):  # model in `legacy` app
    bar = models.CharField()

class FizRouter:
    @staticmethod
    def db_for_read(model, **hints):
        if model._meta.app_label == 'legacy':
            return 'legacy'
        return 'default'

    @staticmethod
    def db_for_write(model, **hints):
        return 'default'

# file: settings.py
DATABASE_ROUTERS = ['path.FizRouter']
}}}

`Foo.objects.get_or_create()` will hit `default` database no matter if requested object is in `legacy` database.
I would assume that we would try to get object from `legacy` database and create in `default` if not found.

As far as I'm concerned current behaviour is not documented, IMHO it should be, if current behaviour is desired."	Uncategorized	closed	Database layer (models, ORM)	2.2	Normal	duplicate	router, database-router, get_or_create		Unreviewed	0	0	0	0	0	0
