我正在一个包含多个数据库的 django 项目中工作,我正在寻找一种使用导入或方法获取当前数据库别名的方法。
我一直在文档中搜索,但没有找到任何有用的信息。
最佳答案
Django 中不存在“当前”数据库别名之类的东西。
查看数据库路由器的文档以了解原因:
https://docs.djangoproject.com/en/1.8/topics/db/multi-db/#database-routers
(尽管 @fasouto 通过使用 QuerySet
的私有(private) API,在特定模型上的读取操作上下文中正确显示了“当前”别名)
试试这个:
from django.db import router
alias_for_read = router.db_for_read(MyModelClass)
# optionally:
alias_for_read = router.db_for_read(MyModelClass, instance=my_model_instance)
# similarly:
alias_for_write = router.db_for_write(MyModelClass)
alias_for_write = router.db_for_write(MyModelClass, instance=my_model_instance)
关于instance
参数...数据库路由器类的规范表明它们应该接受**hints
kwargs。他们还指出,当前仅支持的提示是实例。但除非您有一个使用此提示的自定义路由器类,否则您不需要提供当前实例。
关于python - Django - 有没有办法获取当前数据库别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30443508/