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

时间:2009-10-22 20:29:29

标签: django architecture

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

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

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

谢谢! 皮特

1 个答案:

答案 0 :(得分:2)

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

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

现在,如果您有两个自己的应用程序并且需要了解彼此的模型,我可以考虑两种情况:

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

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

  3. 我通常拥有自己的core应用程序(就像有一个django.core),我保留了项目中应用程序中常见的代码。如果不同应用程序的模型彼此依赖,则会将它们移动到此应用程序。

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