python - Django 项目 models.py 与应用程序 models.py

标签 python django django-models

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

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

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

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

提前致谢。

最佳答案

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

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

另见 James Bennett's "writing reusable Django applications" presentation来自 DjangoCon 2008。

关于python - Django 项目 models.py 与应用程序 models.py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2610727/

相关文章:

python - 将 While 循环设置为最多循环 3 次

python - Django 自引用模型过滤器ForeignKey

python - 使用 scrapy : defining path to Django project 访问 Django 模型

django-models - 访问模型属性内的相关对象

django - 获取所有具有 M2M 关系的 Django 对象

python - 评估两个数据帧中行的所有组合

python - python中的希尔伯特矩阵代码

Django 用户注册问题

python - 是否可以在 Django Behave 测试中进行模拟?

python - 让 IPython 使用 Python 3 而不是 Python 2 运行