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_company1
和 app_company2
导入它。
如果要求在数据库中有单独的表,则 inventory
和 transaction
模型应在 app_shared
中定义为抽象模型。 app_company1
和 app_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,尝试区分不同公司的记录。这样一来,您可以根据需要添加任意数量的公司,而无需复制代码或为每个公司添加新应用。
这可能是一个奇怪的问题,从标题上看可能并不明显,但找不到更好/更具描述性的标题来描述我的问题。
我有一个库存控制应用程序,有自己的模型、信号、管理和表格。我需要为多家公司复制此应用程序,以下是我目前正在做的事情:
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_company1
和 app_company2
导入它。
如果要求在数据库中有单独的表,则 inventory
和 transaction
模型应在 app_shared
中定义为抽象模型。 app_company1
和 app_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,尝试区分不同公司的记录。这样一来,您可以根据需要添加任意数量的公司,而无需复制代码或为每个公司添加新应用。