Django-Oscar - 分叉嵌套应用程序

Django-Oscar - Forking nested applications

我在分叉 Django-oscar 属于其他 Django-oscar 应用程序的 sub-set 应用程序时遇到问题。对于我正在关注的 documentation/tutorial,查看 here.

我已经成功分叉了未嵌套在其他应用程序中的应用程序,并相应地更新了我安装的应用程序。下面是应用程序的一个子集,用于演示嵌套应用程序的一般模式

'dashboard_folder.dashboard.apps.DashboardConfig',
'oscar.apps.dashboard.reports.apps.ReportsDashboardConfig',
'oscar.apps.dashboard.offers.apps.OffersDashboardConfig',

但是,文档(上面链接)没有清楚地概述如何调用嵌套应用程序。我认为他们可能会自动用他们的“parents”进行分叉,但是,一个简单的测试(下面的代码)证明 other-wise:

如果我将 'oscar.apps.dashboard.reports.apps.ReportsDashboardConfig', 更改为 dashboard_folder.dashboard.reports.apps.ReportsDashboardConfig',

我收到以下错误:

ModuleNotFoundError: No module named 'dashboard_folder.dashboard.reports'

我想 id 尝试了一些 'educated' 猜测关于如何调用嵌套应用程序来派生它们但是不幸的是以下所有都失败了:

manage.py oscar_fork_app offers offers_folder
CommandError: There is no app with the label 'offers'

manage.py oscar_fork_app dashboard.offers offers_folder
CommandError: There is no app with the label 'dashboard.offers'

manage.py oscar_fork_app ReportsDashboard ReportsDashboard_folder
CommandError: There is no app with the label 'ReportsDashboard'

manage.py oscar_fork_app reportsdashboard ReportsDashboard_folder
CommandError: There is no app with the label 'reportsdashboard'

manage.py oscar_fork_app dashboard/reportsdashboard ReportsDashboard_folder
CommandError: There is no app with the label 'dashboard/reportsdashboard'

任何帮助将不胜感激,除了通过电子邮件 Django-oscar 寻求帮助之外,我还需要再尝试几次,但也许这个问题将来会对其他人有所帮助!

编辑:

这是我的仪表板应用程序配置以供参考:

import oscar.apps.dashboard.apps as apps

class DashboardConfig(apps.DashboardConfig):
    name = 'dashboard_folder.dashboard'

所有其他 Oscar 分叉应用程序都遵循相同的一般模式。

你是对的,这方面的文档不是很清楚。 oscar_fork_app 的第一个参数是您要分叉的应用的 应用标签 。对于顶级应用程序,这类似于 offercatalogue,但对于嵌套应用程序,您需要检查该应用程序的 apps.py 以查看标签。

如果你以oscar.apps.dashboard.reports.apps.ReportsDashboardConfig为例,那么它的应用程序配置如下:

class ReportsDashboardConfig(OscarDashboardConfig):
    label = 'reports_dashboard'    # <--- this is important

label 是您需要用来分叉应用程序的内容。所以像:

python manage.py oscar_fork_app reports_dashboard path/to/your_forks_directory

另请注意,第二个参数必须是 保存所有分叉应用程序的目录的顶层 的路径。该目录的子目录必须与 Oscar 的应用程序结构相匹配,嵌套应用程序将分叉到其中相应的嵌套目录中。

如果在此之后您仍然得到 ModuleNotFoundError,那么很可能是因为 Oscar 的应用 name auto-generated 与您的项目结构不完全匹配。检查此名称以查看它是否与在您的项目中找到的模块匹配,如果不匹配则进行调整。