Django - 如何创建重复的应用程序而不重复代码(模型,信号等)

时间:2015-06-01 12:55:05

标签: django models

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

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

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之间,一切都是相同的,相同的模型,信号等等。我必须将它们分开以在数据库中创建自己的表。但是不想复制相同的代码。有没有办法防止重复?

2 个答案:

答案 0 :(得分:1)

您应该将所有相同的代码移至app_shared应用程序,然后从app_company1app_company2导入。

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

答案 1 :(得分:0)

  

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

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