【发布时间】:2019-05-02 14:38:12
【问题描述】:
我正在将 Djnago-oscar 用于基于太阳能设备的电子商务网站。我需要为“Basket”模型添加一个选项,其中包含“Battery Name”、“Notes”和 “制造商”。我不想在子类 AbstractProduct 中添加它是有原因的。相反,我想用子类 Basket 模型构建它。 现在我需要帮助来了解我的工作流程,以便使用 AddToBasket 表单进行这项工作。在 Django-oscar/basket 中有使用 formset 工厂和表单的 formsets.py。 我有点困惑,决定向社区寻求帮助。
以下是代码:
models.py
MANUFACTURERS = (
('UPS SYSTEMS', 'UPS SYSTEMS'),
('VOLTA', 'VOLTA'),
('TOSHIBA ', 'TOSHIBA '),
)
BATTERIES = (
('LITHIUM', 'LITHIUM'),
('NICAD', 'NICAD'),
('NIFE ', 'NIFE '),
)
class AddBattery(AbstractBasket):
battery_name = models.CharField(max_length=1, choices=BATTERIES)
manufacturers = models.CharField(max_length=1, choices=MANUFACTURERS)
price = models.DecimalField(decimal_places=2, max_digits=6)
notes = models.CharField(max_length=200, null=True, blank=True)
def __str__(self):
return self.battery_name
class Basket(AbstractBasket):
add_bat=models.ForeignKey(_(u'Add a Batter'), to=AddBattery, null=True, blank=True)
forms.py
from django import forms
from django.conf import settings
from django.db.models import Sum
from django.utils.translation import ugettext_lazy as _
from oscar.forms import widgets
from oscar.apps.basket.forms import BasketLineForm as CoreBasketLineForm,\
SavedLineForm as CoreSavedLineForm, BasketVoucherForm as CoreBasketVoucherForm,\
AddToBasketForm as CoreAddToBasketForm
from .models import AddBattery
from oscar.core.loading import get_model, get_classes
Line = get_model('basket', 'line')
Basket = get_model('basket', 'basket')
Product = get_model('catalogue', 'product')
class BasketLineForm(CoreBasketLineForm):
class AddBatteryForm(CoreBasketLineForm.Meta):
model = AddBattery
fields = ['battery_name', 'manufacturers', 'comment']
views.py
我需要帮助来确定这部分,因为它有太多嵌套元素,我无法正确处理。 非常感谢您的帮助。
模板: 我可以解决这个问题,因为我需要管理员才能添加它,但最终用户只能选择价格。 在客户选择后,我需要与产品和电池合并价格。对这部分的任何建议也会很棒 关于如何从购物车中获取合并价格以进行结帐。
【问题讨论】:
标签: django-forms django-oscar django-formwizard