Django ORM中的别名

时间:2016-06-21 19:32:06

标签: mysql django orm alias

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

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

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

有没有办法将Badge别名变为tbl_Badge_data,以便所有未来的开发都使用正确的名称?如果是,这将如何影响基础表的名称?如果没有,在没有引入性能影响的情况下处理这样的事情的最佳方法是什么(例如"代理表"或者#34;代理模型"这是一对一的地图) ?你可以想象,我的团队并不想在这个非问题上投入时间(并且可能有理由)让我忽略这一点。

1 个答案:

答案 0 :(得分:2)

代理模型一对一地图;它在数据库中没有任何表示,并且完全符合您的要求。

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

Badge = tbl_Badge_data

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