django - Django-Oscar - 分叉嵌套应用程序
问题描述
我在分叉 Django-oscar 应用程序时遇到问题,这些应用程序是其他 Django-oscar 应用程序子集的一部分。对于我正在关注的文档/教程,请在此处查看。
不过,我已经成功分叉了未嵌套在其他应用程序中的应用程序,并相应地更新了我安装的应用程序。下面是应用程序的一个子集,用于演示嵌套应用程序的一般模式
'dashboard_folder.dashboard.apps.DashboardConfig',
'oscar.apps.dashboard.reports.apps.ReportsDashboardConfig',
'oscar.apps.dashboard.offers.apps.OffersDashboardConfig',
但是,文档(上面链接)没有清楚地概述如何调用嵌套应用程序。我认为他们可能会自动与他们的“父母”分叉,但是,一个简单的测试(下面的代码)证明是相反的:
如果我'oscar.apps.dashboard.reports.apps.ReportsDashboardConfig',
改为
dashboard_folder.dashboard.reports.apps.ReportsDashboardConfig',
我收到以下错误:
ModuleNotFoundError: No module named 'dashboard_folder.dashboard.reports'
我想我尝试了一些关于如何调用嵌套应用程序来分叉它们的“受过教育”的猜测,但是不幸的是,以下所有操作都失败了:
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
是你想要 fork 的应用的应用标签。对于顶级应用程序,这类似于offer
or catalogue
,但对于嵌套应用程序,您需要检查该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
在这之后仍然得到一个,那么很可能是因为name
Oscar 自动生成的应用程序与你的项目结构不太匹配。检查此名称以查看它是否与在您的项目中找到的模块匹配,如果不匹配则对其进行调整。
推荐阅读
- api - 如何转换为 PHP 控制台 CURL
- python - 在 Python 中使用 for 循环时如何更改列表中的值?(不使用索引)
- javascript - 无法使用变量 - 我想我只是再次分配变量?
- python - 是否有一个观察者和一个事件处理程序来响应 python 中的文件修改?
- python - 你可以在 PyInstaller 可执行文件中使用 pip 吗?
- appian - 找不到 Appian 管理控制台
- postgresql - 是否有确保不存在 postgres 函数的 ansible 声明?
- c# - 无法验证防伪令牌
- mysql - MYSQL:在连接中找到时选择值,否则为占位符
- networking - Terraform GCP 创建网络失败。错误 400