我一直在试图弄清楚如何自动处理来自动态创建的数据库(MySql)的迁移和查询。我有一个动态路由器,我可以通过名称将路由前缀到数据库以执行查询。但后来我找到了objects.using('db_name')
。
using(...)
功能是否不需要路由器?或using(...)
提供路由器以下方法评估的信息,特别是model._meta.app_label
:
def db_for_read(self, model, **hints):
"""
"""
if model._meta.app_label == 'db_name':
return 'db_name'
return None
def db_for_write(self, model, **hints):
"""
"""
if model._meta.app_label == 'db_name':
return 'db_name'
return None
答案 0 :(得分:0)
using
是一种直接覆盖用于查询的数据库的方法。它无法更改用于您无法控制的查询的数据库,例如由第三方应用制作的数据库。
路由器根据模型和可能的其他提示指定用于操作的默认数据库。它不允许为单个查询更改数据库,但它允许更改查询使用的数据库。
因此,using
既不需要路由器,也不提供路由器使用的信息,但它会根据具体情况覆盖路由器。