Django - 如何在不复制代码(模型、信号等)的情况下创建重复的应用程序

Django - how to create duplicate apps without duplicating the code (models, signals and so on)

这可能是一个奇怪的问题,从标题上看可能并不明显,但找不到更好/更具描述性的标题来描述我的问题。

我有一个库存控制应用程序,有自己的模型、信号、管理和表格。我需要为多家公司复制此应用程序,以下是我目前正在做的事情:

app_shared
    models
        products
        adressbook
    forms
    signals
    admin

app_company1
    models
        inventory
        transactions
        ...
    forms
    signals
    admin

app_company2
    models
        inventory
        transactions
        ...
    forms
    signals
    admin

问题是,在 app_company1 和 app_company2 之间,一切都是相同的,完全相同的模型、信号等等。我必须将它们分开以在数据库中创建自己的表。但不想重复相同的代码。有没有办法防止重复?

您应该将所有相同的代码移动到 app_shared 应用程序并从 app_company1app_company2 导入它。

如果要求在数据库中有单独的表,则 inventorytransaction 模型应在 app_shared 中定义为抽象模型。 app_company1app_company2 应该创建自己的从抽象模型派生的相应模型。这将确保在数据库中生成单独的表。有关详细信息,请参阅 this 文档页面。

The issue is, between app_company1 and app_company2, everything is identical, same exact models, signals and so on. I have to keep them separate to create their own tables in database. But don't want to duplicate same code. Is there a way of preventing the duplication?

如果您有这样的代码,那么您的应用程序设计并不完美。你可以尝试为app_company做一个app,尝试区分不同公司的记录。这样一来,您可以根据需要添加任意数量的公司,而无需复制代码或为每个公司添加新应用。