Python Django将models.py从项目包含到多个应用程序

Python Django将models.py从项目包含到多个应用程序,python,django,django-models,import,Python,Django,Django Models,Import,我想知道是否有一种方法可以将models.py从项目目录包含/导入到多个应用程序中,而无需在每个应用程序中复制模型。谢谢大家! 您不应该在Django中将模型直接放在项目级别上。每个模型都必须与特定的应用程序相关联。另一方面,您可以在应用程序之间导入模型 如果你觉得需要一个项目级的模型,那就意味着你没有将你的功能正确地划分到应用程序中。不应该有任何理由使用“项目级模型”(或“项目级视图”)。您只需将功能拆分为单独的应用程序 假设您正在为一所学校设计一个内部网网站。你会有一个处理学生帐户的应用程序

我想知道是否有一种方法可以将models.py从项目目录包含/导入到多个应用程序中,而无需在每个应用程序中复制模型。谢谢大家!

您不应该在Django中将模型直接放在项目级别上。每个模型都必须与特定的应用程序相关联。另一方面,您可以在应用程序之间导入模型

如果你觉得需要一个项目级的模型,那就意味着你没有将你的功能正确地划分到应用程序中。不应该有任何理由使用“项目级模型”(或“项目级视图”)。您只需将功能拆分为单独的应用程序


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

在Django中,你不能直接将模型放在项目级。每个模型都必须与特定的应用程序相关联。另一方面,您可以在应用程序之间导入模型

如果你觉得需要一个项目级的模型,那就意味着你没有将你的功能正确地划分到应用程序中。不应该有任何理由使用“项目级模型”(或“项目级视图”)。您只需将功能拆分为单独的应用程序


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

每个应用程序的应用程序文件夹中都必须有自己的models.py。如果应用程序文件夹中有models.py,则可以在项目的任何文件中编写以下导入语句:

from myapp.models import model_to_import
如果在任何应用程序文件夹或任何其他文件夹之外有models.py,请确保该文件夹包含一个(带两个下划线)init(带两个下划线).py文件,并在要导入的文件中写入以下内容:

from folder_name import models
from models import model_to_import

每个应用都必须在应用文件夹中有自己的models.py。如果应用文件夹中有models.py,则可以在项目的任何文件中编写以下导入语句:

from myapp.models import model_to_import
如果在任何应用程序文件夹或任何其他文件夹之外有models.py,请确保该文件夹包含一个(带两个下划线)init(带两个下划线).py文件,并在要导入的文件中写入以下内容:

from folder_name import models
from models import model_to_import

您可以创建一个包含项目范围内所需的任何模型的应用程序,例如

python manage.py startapp projectcore
然后

from projectcore.models import MyModel
根据需要


但如果可以的话,最好听听路德维克的意见,并尝试重组

您可以创建一个包含项目范围内所需的任何模型的应用程序,例如

python manage.py startapp projectcore
然后

from projectcore.models import MyModel
根据需要


但如果可以的话,最好听听路德维克的意见,并尝试重组

你能解释一下你为什么需要这个吗?我不太清楚“包含/导入”是什么意思。嗯,我的项目中可能有5-6个应用程序。我不想复制我应用程序中的每个模型。我想知道的是,您是否可以直接从project文件夹导入models.py。那么,您尝试过吗?怎么搞的?我看这里没有什么难题……是的,我试过了。它给了我“没有名为xxxxxx.models的模块”。你能解释一下你是怎么做的吗?谢谢@感谢您的回复。我已经看过了。我确实在应用程序中正确地划分了我的项目。猜测是不可能的。我想在我的应用程序的一个视图中写一些类似“from projectname.models import Product”的东西。py你能解释一下为什么需要这个吗?我不太清楚“包含/导入”是什么意思。嗯,我的项目中可能有5-6个应用程序。我不想复制我应用程序中的每个模型。我想知道的是,您是否可以直接从project文件夹导入models.py。那么,您尝试过吗?怎么搞的?我看这里没有什么难题……是的,我试过了。它给了我“没有名为xxxxxx.models的模块”。你能解释一下你是怎么做的吗?谢谢@感谢您的回复。我已经看过了。我确实在应用程序中正确地划分了我的项目。猜测是不可能的。我想在我的应用程序的一个视图中写一些类似于“from projectname.models import Product”的东西。谢谢你的回复!我目前正在做一个项目,我有一个模型,它定义了一些其他对象的时间有效性。为了简单起见,相同的模型将用于(时间验证)不同的其他模型。想象一下,f.e.Windows中的ACL-相同的模型,但应用于许多不同的对象(文件系统、数据库等)。我使用单独的应用程序,但常识将在其他地方。谢谢您的回复!我目前正在做一个项目,我有一个模型,它定义了一些其他对象的时间有效性。为了简单起见,相同的模型将用于(时间验证)不同的其他模型。想象一下,f.e.Windows中的ACL-相同的模型,但应用于许多不同的对象(文件系统、数据库等)。我使用单独的应用程序,但常识将在其他地方。谢谢!这就是我要找的。你应该接受解决你问题的答案,因为它可能会帮助其他用户解决类似问题。谢谢!这就是我想要的。你应该接受解决你问题的答案,因为它可能会帮助其他有类似问题的用户。