将Django模型同名指定为Python类是危险的吗?

时间:2015-10-14 21:30:53

标签: python django django-models

在构建Django应用程序时,从框架或命名空间的角度来创建一个与您的Django模型同名的Python类是危险的吗?我的应用程序使用名为“Photo”的Python类在我的应用程序上传时存储有关照片的临时信息。但是在我处理照片后,我想通过照片模型将有关照片的其他永久信息存储到我的数据库中。我知道从程序员的角度来看可能存在混淆。但除了这个风险之外,如果类和模型在单独的模块中,我是否会遇到问题或遇到奇怪的错误,因为Django对哪个是哪个感到困惑?

感谢。

1 个答案:

答案 0 :(得分:0)

我没有明确提及这一事实,但你会没事的。请记住,您仍然必须遵循Python的规则,因此您无法导入名称冲突等,但您正在创建的模型本身是Django提供的类的子类,所以它不是像isinstance()的内部函数一样纯粹因为类似名称而表现得很愚蠢。当模型由Django加载时,它们确实被app命名(在accessing a model in a different app中可以看到,在处理database routers时或者如何命名数据库表。为了更深入,请查看源代码对于apps.registry,确保模块之间的模型名称不会发生冲突,apps.config用于处理导入模块中包含的名称的对象。所有这些注册和应用程序加载将在您完成之前完成甚至开始运行你的很多Django代码(假设你没有按照当然的方式注入它)。而且,我已经完成了它,所以不要担心Django在类/模型名称方面太愚蠢