Django ORM 中的别名

Alias in Django ORM

我最近开始在长期支持 运行 MySQL 的 Django 网站上工作。除了数据库中的一个补丁似乎是匆忙应用的之外,代码大部分都是干净且写得很好的。

具体来说,其中一个模型被命名为 tbl_Badge_data。根据适用于网站其余部分的命名约定,此模型应命名为 Badge

不幸的是,已经有太多基于错误名称的构建,并且更改现有脚本是不可行的(这些包括 Django 查询集操作以及 SQL 语句)。替换所有错误名称的实例是不可能的,因为并非所有代码都归我们所有;还有其他用户依赖此数据。

有什么方法可以将 Badge 别名为 tbl_Badge_data 以便以后的所有开发都使用正确的名称吗?如果是,这将如何影响基础 table 的名称?如果不是,那么在不影响性能的情况下处理此类问题的最佳方法是什么(例如 "proxy table" 或 "proxy model" 是一对一的映射)?正如您所想象的,我的团队不想在这个无关紧要的问题上投入时间(并且可能有理由)希望我忽略它。

代理模型不是一对一映射;它在数据库中没有表示,并且完全符合您的要求。

更简单的是在你的模型中定义一个别名;在 tbl_Badge_data 的定义之后,你可以这样做:

Badge = tbl_Badge_data

并在任何需要的地方导入 Badge。