django - 我应该如何使用其他应用程序中的 django 模型?

标签 django architecture

在我的应用程序中使用其他 Django 应用程序的模型的正确方法是什么?例如,我是否应该简单地进入其他应用程序的模型并添加我的功能以有效地耦合两个应用程序?

我应该使用 django 代理模型对模型进行子类化以添加我的应用程序特定功能吗?但是,此方法排除了在父应用程序中使用此附加功能的可能性。

我是否应该简单地导入模型并创建库函数来处理此附加功能?

谢谢! 皮特

最佳答案

某些类别的应用程序最终会与其他应用程序耦合 - 一个很好的例子是 django.contrib.auth :如果您使用 Django 用户模型,则您依赖于该应用程序并且您自己的应用程序与之耦合。

这种情况没有任何问题。我倾向于认为它不是耦合,而是依赖。您的应用程序取决于可用的 django.contrib.auth。这是很自然的事情,因为您需要该功能。您始终可以将该应用程序替换为提供与您当前正在使用的界面相同的界面的其他应用程序...

现在,如果您有两个自己的应用程序,并且它们需要了解彼此的模型,我可以想到两种场景:

  1. 您的共享模型需要第三个应用程序

  2. 它们应该只是一个应用程序(不常见;您一开始就有理由将它们分开!)

我通常有一个自己的core应用程序(就像有一个django.core),我在其中保存项目中应用程序中通用的代码。如果不同应用程序的模型相互依赖,它们会移至此应用程序。

现在,您的两个应用程序也有可能实际上只是一个应用程序 - 但这不应该是默认的想法。单一应用程序是一件非常糟糕的事情(TM)。

关于django - 我应该如何使用其他应用程序中的 django 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1609770/

相关文章:

python - Elastic Beanstalk 中用于接收 AWS Worker Tier 请求的 Django POST 监听器

python - 为什么 Dramatiq 在 Docker 容器中启动失败?

django 在自定义管理器中访问相关模型状态

android - 使用 Jetpack Navigation 和 RxJava + Dagger2 的登录流程

linux - 了解技术(Docker)容器架构

python - Heroku 中的 Django 部署 : Fails in createsuperuser : django. db.utils.OperationalError:没有这样的表:auth_user

javascript - 从views.py获取Django Python数据到template.html中的javascript对象

.net - 对于基于 UserControl 的 WPF 架构放弃 MVVM 是什么体验?

caching - 对缓存中的可过滤键集进行高性能查找的正确方法是什么?

python - 构建用于分类/描述产品的应用程序 - 在计划和执行之间不知所措