[Django]-Django – Why doesn't syncdb respect the database router?

10👍

When you write your router make sure you’ve written the allow_syncdb() method. It takes both a database and a model. When you run manage.py syncdb you’re essentially setting the --database=default. If you don’t want your models to sync to the default database then your allow_syncdb() method should return False for the condition that db==default and model._meta.app_label==myapp.

You’ll need to run syncdb with the --database=your_other_db option to get myapp into that db. But make sure in that case that allow_syncdb() returns True only for the case that db==your_other_db and model._meta.app_label==myapp.

Does that make sense? Basically you have to run the manage.py syncdb method twice, once for each database. You cannot run it only once and have it update both databases.

Leave a comment