【问题标题】:Sharing Django user model between two apps in the same project在同一项目中的两个应用程序之间共享 Django 用户模型
【发布时间】:2017-04-16 15:28:02
【问题描述】:

我看到一些类似的问题,但它们似乎不一样或没有答案。

我正在使用 Django 练习并尝试制作一个简单的荷兰拍卖项目。最初我认为这个想法是创建两个不同的应用程序,一个买家应用程序和一个卖家应用程序,并让它们共享数据库(或三个应用程序,一个 commonApp,一个buyerApp 和一个sellerApp)。然而,我越深入这个似乎越复杂 - 我觉得 Django 并不是真的意味着有不同的应用程序,这些应用程序是围绕共享一组表中的所有数据而设计的(也许我错了?),大致基于我发现必须修改迁移的工作方式以适应这一点。

所以想法 #2,只需制作一个通过仔细管理视图来分离功能的应用程序,但只保留一组模型,因为我能想到的几乎所有数据(用户、产品等) ) 无论如何都是共享的。这似乎具有让 Django 完成所有数据管理的优势,而我不必为数据库设计而烦恼。但是,我担心管理视图可能会变得过于复杂。

也许有一个想法#3 对这类项目有意义,我没有考虑过,因为我是新手,也许它告诉我 Django 甚至不是这项工作的正确工具。 ..

我尝试了编程想法 #1,它很快就变成了意大利面条,并且只在事情非常小的时候才起作用。我目前正在研究想法#2,到目前为止我认为它还可以,但是我在概念化如何在视图中分离内容时遇到了麻烦,但这很可能只是我缺乏经验。

所以我的问题是:对于我缺少的这类信息,是否有明显的资源?如果是这样,你能指点我吗?

【问题讨论】:

  • 您的想法 #2 似乎准确。我有多个以相同方式制作的项目。哪个部分不工作?
  • 与其说是有些东西不工作,不如说是我不确定如何处理视图、命令、查询等,以使事情保持良好分离和清晰在(在这种情况下)卖家和买家之间。从某种意义上说,我认为我需要更多的知识才能清楚地提出这个问题。典型的 Django 开发人员会不会将卖家视图放在一个文件中(如 Seller_views.py),而将买家视图放在另一个文件中,以免混淆?我想我是在问这样的项目/应用程序是否有普遍接受的最佳实践?

标签: django web-applications django-models


【解决方案1】:

在您的 Django 项目中:

manage.py startapp sellers
manage.py startapp buyers
manage.py startapp common

将这三个应用添加到settings.py。根据您的 Django 版本,它可以只是 'sellers''buyers''common''seller.apps.SellerConfig' 等等。

common/models.py 中编写您的模型,以及与这两个应用程序相关的任何其他逻辑。

然后,在您的卖家或买家视图中:

from common.models import * # or a particular model

希望这会有所帮助。

【讨论】:

  • 这对我来说很好用,我只是犹豫要不要继续使用它,因为拥有一个只包含没有视图的模型的应用程序感觉违背了 Django 的精神。但我猜这个框架并不是真的为这类应用程序设计的?
  • 我认为是为此类应用程序设计的。我个人有一个包含 5 个应用程序的项目:一个给客户,一个给卖家(用户也是,但逻辑不同),网站管理员(保持网站运行的人),一个用于 ETL 操作,就像你的情况一样,一个具有通用逻辑的通用应用程序。每个应用程序都有不同的视图、命令和模板。
  • 嗨,每个应用程序都有自己的 settings.py,例如 https://gitlab.com/mayan-edms/mayan-edms,那么有没有关于如何集成的博客?
猜你喜欢
  • 2022-01-06
  • 1970-01-01
  • 2011-05-07
  • 2012-09-19
  • 2017-10-16
  • 2013-10-31
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多