Python Django project models.py与app models.py

Python Django project models.py与app models.py,python,django,django-models,Python,Django,Django Models,我正在学习Django,并试图了解models.py在项目中的使用与在应用程序中的使用。从教程示例中可以看出,我在应用程序中包含了一个模型定义,但当我将这些知识应用到自己现有的数据库中时,我陷入了困境 我使用了一个数据库(当然是一个副本),并使用inspectdb将概念模式生成为django模型。我是在项目级别这样做的,并假设我可以在该项目的应用程序中使用子模式编写应用程序 但是概括本教程,他们在应用程序的model.py中定义了模型。如果我这样做,我将重复已经在项目级别的模型(或其中的一部分)

我正在学习Django,并试图了解models.py在项目中的使用与在应用程序中的使用。从教程示例中可以看出,我在应用程序中包含了一个模型定义,但当我将这些知识应用到自己现有的数据库中时,我陷入了困境

我使用了一个数据库(当然是一个副本),并使用inspectdb将概念模式生成为django模型。我是在项目级别这样做的,并假设我可以在该项目的应用程序中使用子模式编写应用程序

但是概括本教程,他们在应用程序的model.py中定义了模型。如果我这样做,我将重复已经在项目级别的模型(或其中的一部分),这似乎是一个错误和维护问题

那么,在Django风格中,我如何使用项目模式(或其部分),而不在应用程序的models.py中重新定义它呢


提前感谢。

Django模型只能驻留在应用程序中,而不能驻留在项目本身中。默认情况下,
manage.py inspectdb
输出
models.py
文件的内容,您可以将其放在正确的位置

在您的情况下,将整个内容放在一个应用程序中,然后在有意义的地方将其拆分会更容易


我不确定当前版本的状态如何,但在包中出现
模型之前,
模块表明这是django应用程序,可以放在
已安装的应用程序列表中。

不应该有任何理由使用“项目级模型”(或“项目级视图”)。您只需将功能拆分为单独的应用程序

假设您正在为一所学校设计一个内部网网站。你会有一个处理学生帐户的应用程序,另一个生成时间表的应用程序,还有一个用于内部留言板的应用程序,等等。。每个应用程序都定义了自己的模型(没有“项目级模型”),但应用程序可以相互导入模型(因此留言板帖子可以有一个ForeignKey字段指向“学生”应用程序中的学生)

另见DjangoCon 2008。

  • 一个模型在Django项目中只能定义一次

  • 模型需要存在于项目下的应用程序中

  • 您可以通过导入其他应用程序的模型来访问它们

  • 如果需要向现有模型“添加”,则可以从中继承(请参阅)。这相当简单,但如果你刚刚开始,你可能想留到以后


非常有趣和有教育意义的谈话!James还提到worldonline网站只有
settings.py
url.py
。其余的是apache python路径中的可重用应用程序。