为啥 django 强制所有模型类都在 models.py 中?

Posted

技术标签:

【中文标题】为啥 django 强制所有模型类都在 models.py 中?【英文标题】:Why does django enforce all model classes to be in models.py?为什么 django 强制所有模型类都在 models.py 中? 【发布时间】:2010-11-23 06:25:12 【问题描述】:

我刚刚了解到将模型类拆分为不同的文件会破坏 django 的许多内置功能。

我来自 java 背景。在那里,编写很长的类文件并不被认为是一种好习惯。但是 django 对所有模型类执行单个文件可能会导致程序员编写很长的 models.py 文件。这会让程序员很难看到整个领域模型的组织结构。

那么为什么 django 强制单个文件包含所有域类?

我通过谷歌搜索找到了这个问题的a solution proposal。但我不能确定这是否会正常工作。你推荐这个解决方案吗?

【问题讨论】:

您的链接已失效。可以更新一下吗? models.py getting huge, what is the best way to break it up?的可能重复 【参考方案1】:

单一命名空间:是的。单模块:无。

您的模型必须可从命名空间 appname.models 导入。

【讨论】:

我认为这个答案可能是这个问题的正确答案,但它肯定可以与更清晰有关。我认为它基本上归结为appname.models 需要从其他模块导入所有模型。解释为什么或在哪里记录了这种行为会很有帮助。 同样,为什么让appname.models 只导入定义其他模型的模块是不够的?这肯定会触发必要的元类魔法吗?如果不是,为什么?

以上是关于为啥 django 强制所有模型类都在 models.py 中?的主要内容,如果未能解决你的问题,请参考以下文章

访问Django中间模型组中的字段

Django:为啥有些模型字段会相互冲突?

为啥 Django 模型信号不起作用?

为啥 Django 模型级联删除在现实世界中会失败?

Django启航Django模型

Django启航Django模型