解耦django应用程序-规划项目的最佳实践

解耦django应用程序-规划项目的最佳实践,django,decoupling,django-apps,Django,Decoupling,Django Apps,我正在从事一个有多个应用程序的项目,并希望包括一个新闻应用程序的新闻故事 但是,我想将新闻故事链接到我的自定义应用程序中的对象,但使用开源新闻应用程序来运行新闻 目前,我只是简单地入侵了所选的新闻应用程序,以添加与我的模型的ForeignKey关系 i、 e.小部件应用程序,具有小部件模型 然后是一个条目模型直接链接到我的小部件模型的新闻应用程序 有更好的方法吗?因为如果我想用最新版本更新新闻应用程序,它显然会覆盖我的黑客攻击 我可以从我的自定义模型中获得链接,但工作流应该是 添加新闻文章 选择

我正在从事一个有多个应用程序的项目,并希望包括一个新闻应用程序的新闻故事

但是,我想将新闻故事链接到我的自定义应用程序中的对象,但使用开源新闻应用程序来运行新闻

目前,我只是简单地入侵了所选的新闻应用程序,以添加与我的模型的ForeignKey关系

i、 e.小部件应用程序,具有小部件模型

然后是一个条目模型直接链接到我的小部件模型的新闻应用程序

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

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

添加新闻文章 选择要链接到的小部件 不是

添加新闻文章,保存 找到要链接到的小部件 链接到新闻文章
我认为你可以有一个模型,它继承了外部应用程序中的模型。大致如下:

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

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

我认为您可以在外部应用程序中拥有一个从模型继承的模型。大致如下:

MyNewsArticle(ExternalAppNewsArticle):
    object = models.ForeignKey(MyObject)
只要你是在添加东西而不是删除东西,这应该是可行的。但是,如果外部应用程序中的模型声明了任何自定义管理器,则必须小心,因为默认情况下Django不会继承它们。您可能需要在自己的模型中再次声明它们