我最近开始在一个长期运行的MySQL支持的Django网站上工作。该代码大部分是干净的,写得很好的,除了数据库中似乎已紧急应用的一个补丁。
具体来说,其中一个模型被命名为tbl_Badge_data
。根据适用于网站其余部分的命名约定,该模型应命名为Badge
。
不幸的是,错误的名称已经建立了太多的东西,并且更改现有的脚本(包括Django queryset操作以及SQL语句)是不可行的。无法替换所有名称错误的实例,因为并非所有代码都归我们所有;还有其他用户依赖此数据。
有什么办法可以将Badge
别名为tbl_Badge_data
,以便将来的所有开发都使用正确的名称?如果是,这将如何影响基础表的名称?如果不是,那么在不引入性能影响的情况下处理此类问题的最佳方法是什么(例如,一对一映射的“代理表”或“代理模型”)?可以想象,我的团队不想在这个非问题上花费时间(并且可能有理由)希望我忽略这一点。
最佳答案
代理模型不是一对一的映射。它在数据库中没有表示形式,并且完全满足您的要求。
不过,更简单的是在模型中定义别名。在定义tbl_Badge_data之后,您可以执行以下操作:
Badge = tbl_Badge_data
并在需要的地方导入徽章。
关于mysql - Django ORM中的别名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37953075/