解耦django应用程序 - 布局项目的最佳实践

时间:2010-01-04 13:30:29

标签: django decoupling django-apps

我正在开发一个包含多个应用的​​项目,并希望为新闻报道添加新闻应用。

但是,我想将新闻报道链接到自定义应用中的对象,但使用开源新闻应用来运行新闻。

目前,我只是将所选的新闻应用程序入侵,以便与我的模型添加ForeignKey关系。

即。一个小部件应用程序,带有小部件模型

然后是一个新闻应用程序,其入口模型直接链接到我的小部件模型

有更好的方法吗?因为如果我想用最新版本更新新闻应用程序,它显然会覆盖我的黑客。

我可以从我的自定义模型获得链接,但工作流程应该是

  1. 添加新闻文章
  2. 选择一个小部件将其链接到
  3. 不是

    1. 添加新闻文章,保存
    2. 找到要将其链接到
    3. 的小部件
    4. 链接回新闻文章

1 个答案:

答案 0 :(得分:5)

我认为你可以拥有一个从外部应用程序中继承模型的模型。有点像:

MyNewsArticle(ExternalAppNewsArticle):
    object = models.ForeignKey(MyObject)

只要你添加东西而不是丢弃东西,这应该有效。如果外部应用程序中的模型已声明任何自定义管理器,则必须小心,因为默认情况下Django不会继承它们。您可能需要在自己的模型中再次声明它们。