我正在考虑使用django-oscar
销售定制产品。只有一个SKU,但它有4个属性,客户可以指定:化学物质,颜色,气味和重量。
- Chemicals是一个JSON对象(名称/值对的字典),我们需要使用它来跟踪化学品的库存。
- 权重为200 ~ 20000之间的整数。
- 香味和颜色目前各有十几个值。
客户将制作食谱并相互分享。配方是4个属性的组合。
产品将按订单生产,所以我们只储备原料,不储备成品。
我们已经有了一个HTML/JavaScript页面,允许客户为4个产品属性选择值。成本需要通过Ajax调用一个需要Django公开的API来完成。
目前,有一个履行合作伙伴(我),但开箱操作的django-oscar
只将履行合作伙伴应用于完全定义的产品。
似乎(但我有点不确定)manage.py oscar_fork_app
在现有的web应用程序中创建分叉的奥斯卡应用程序,如Frobshop…对吗?
从我读到的内容来看,django-oscar
似乎有能力销售我描述的定制产品。我想我需要叉目录和仪表板应用程序。我还需要叉篮和订单和合作伙伴吗?
我该如何设置这种类型的存储?我已经看了https://django-oscar.readthedocs.io/en/latest/topics/customisation.html,但我还没有尝试前进,仍然试图得到一个处理的事情。
我决定试着看看发生了什么。我决定将根模块命名为ancientwarmth
。下面的工作很好,我分叉了catalogue
,dashboard
,basket
,order
和partner
。
for x in catalogue dashboard basket order partner; do
./manage.py oscar_fork_app $x ancientwarmth
sed -i s/oscar.apps.$x.apps.${x^}/ancientwarmth.$x.apps.${x^}/
frobshop/settings/base.py
done
但是,我无法分叉其中的任何一个:
oscar.apps.dashboard.orders.apps.OrdersDashboardConfig
oscar.apps.dashboard.catalogue.apps.CatalogueDashboardConfig
oscar.apps.dashboard.partners.apps.PartnersDashboardConfig
I got a error likeCommandError: There is no app with the label 'dashboard.catalogue'
.
这是一个相当宽泛的问题,而且不太可能得到一个全面的答案,因为写一个问题需要花费时间,但是有一些注释(并帮助解决分叉错误):
-
使用Oscar销售定制产品是很有可能的。
-
你需要分叉哪些应用真的取决于你的用例和你需要覆盖的Oscar的核心功能。首先,你需要充分了解Oscar的应用提供了哪些现成的功能,以决定是否需要覆盖它们的功能。一般情况下,你不可能回答你需要分叉哪些应用。Oscar的设计是为了给你尽可能多的灵活性来重写它的功能——知道什么时候/在哪里这样做确实需要首先熟悉它的功能。
-
oscar_fork_app
的第一个参数是DjangoAppConfig
的标签,而不是模块名,这是你想要使用的。这就是为什么你在尝试分叉仪表板应用程序时会得到一个错误。正确的命令应该是manage.py oscar_fork_app catalogue_dashboard <destination_path>
。这在文档中不是很清楚,有一个问题需要修复。这里定义了catalogue_dashboard
(它适用于
catalogue
,basket
等应用程序,因为为应用程序定义的应用程序名称与您提供的参数相同)