Django ORM和依赖项

Django ORM和依赖项,django,orm,python-2.7,model,Django,Orm,Python 2.7,Model,我目前正在集思广益,讨论如何在Django中构建一个现有的PHP CodeIgniter项目。 我已经浏览了一些文档,并做了一些在线教程来测试它是如何工作的,我真的被它迷住了 我目前面临的理论设计问题是,在我心中;应用程序将相互依赖,但Django文档本身声明it应用程序应该是可插拔的 问题是,我有一个产品应用程序,它具有不同的子属性,如颜色、组、模型和外键关系。现在我开始考虑如何使用我的发票应用程序,但我立即注意到发票应用程序将需要产品应用程序中的产品 我想知道其他人在Django项目中是如何

我目前正在集思广益,讨论如何在Django中构建一个现有的PHP CodeIgniter项目。 我已经浏览了一些文档,并做了一些在线教程来测试它是如何工作的,我真的被它迷住了

我目前面临的理论设计问题是,在我心中;应用程序将相互依赖,但Django文档本身声明it应用程序应该是可插拔的

问题是,我有一个产品应用程序,它具有不同的子属性,如颜色、组、模型和外键关系。现在我开始考虑如何使用我的发票应用程序,但我立即注意到发票应用程序将需要产品应用程序中的产品

我想知道其他人在Django项目中是如何做到这一点的?我是否需要重新思考我设计整个应用程序产品、发票、订单、交付、电子邮件等的方式,以及它们之间如何相互关联

我会告诉Django我的发票应用程序需要初始化我的产品应用程序,还是我会完全改变这种情况,使用ERP应用程序将所有这些部件作为自己的模型存放


最后,我想让我的前台也转换成Django Webshop,并访问我的后台ERP产品。我也很想知道我会如何把这些结合起来。

我不太确定你在问什么,但这里有一些技巧,是基于一些刻苦学习的经验教训

应用程序应该做一件事,而且只能做一件事。如果在句子中没有三个或四个AND,你无法描述你的应用程序的功能,那么你需要重新思考你的应用程序

模型与应用程序绑定;但这并不意味着你不能在应用程序B中使用应用程序A中的模型。模型本身不是应用程序;您不能说产品应用程序具有不同的子属性

如果需要的话,你可以使用有模型但没有视图的应用程序。没有要求应用程序必须提供视图

保持您的视图简单,模型丰富,对于您的应用程序,您可能会有许多实用程序脚本作为帮助工具,这很好,值得鼓励。您不希望在视图中有很多复杂的逻辑,也不希望在模板中有很多逻辑

当django文档声明应用程序是可插拔的时,它的意思是应用程序应该是独立的;他们所需的所有依赖项模板、URL、视图、模型都应该与应用程序一起包含,这样您就可以发布它,人们就可以下载并集成您的应用程序,并且影响最小。1.5的发布在本教程中引入了一个新的部分,可以提供更多的见解


我认为一个好的可插拔应用程序可以很容易地“链接在一起”来解决问题。

一个重要的设计细节是,应用程序不能有循环依赖关系。当你设计关系并将其模块化为应用程序时,你可能会把自己绑在一起,而模型层往往因为设计问题而变得古怪。菲利普的观点很好,但从我所看到的情况来看,当人们设计表格,然后尝试将应用程序映射到表格时,就会出现这种陷阱;不是首先设计逻辑和用例,而是根据对象进行思考;让ORM整理桌子。最大的挑战是理解框架背后的理念,而不是像在django中编写RoR或在django中编写PHP那样尝试将您所知道的内容写入django。这是可以做到的,但你最终会遇到问题。谢谢你的智慧。我目前仍在阅读大量文档和您链接的新教程。我只是对如何智能地构建我的ERP网站的结构非常好奇。我的产品将包含多种颜色和型号。这些产品将被提供,可以转化为订单。这些订单可以全部或部分交付。完成后,发送发票或信用发票。我的CodeIgniter结构非常清晰,但是DataMapper和所有团队成员由于风格不同而使它成为一个大难题。我们项目的主要问题是,强大的关系以及它们在整个系统中的相互交织方式使得系统的代码难以阅读。Django看起来真的像是让整个团队朝着整洁统一的代码方向努力的东西,因为PHP非常松散。此外,ORM机制看起来比我们在基本CodeIgniter和DataMapper中使用的更具可读性和吸引力。请记住,如果您的模型设计不正确,最好的框架将不会有帮助。因此,在深入到这一部分之前,请考虑模型的结构和关系,而不是表,而是模型。还要记住,在关系数据库中建模多变量产品也有其问题。您可以考虑一种混合解决方案,其中变体和产品细节存储在文档数据库中,并且只有事务性信息存储在关系数据库中。 事务完整性和回滚是必需的。