我正在构建一个向导(使用Django Formtools),允许用户订购一个或多个项目,每个选定项目都可以指定所需的数量。
我希望避免使用经典的购物车系统,并使购买变得尽可能简单。我的导航建议只有3页/步骤:
我在第一步创建表单时遇到了麻烦,我正在寻找帮助,找到我尝试过的两个选项之间的中间位置。
我的Django模型看起来像这样(演示简化):
class Item(models.Model):
name = models.CharField(max_length=255)
price = models.DecimalField(max_digits=5, decimal_places=2)
class Order(TransactionBase):
items = models.ManyToManyField(Item, through='OrderedItem')
class OrderedItem(models.Model):
order = models.ForeignKey(Order)
item = models.ForeignKey(Item)
quantity = models.PositiveSmallIntegerField()
使用以下ModelForm,我能够列出所有可用的项目:
class OrderSelectionForm(forms.ModelForm):
class Meta:
model = Order
fields = ('items',)
widgets = {
'items': forms.CheckboxSelectMultiple(),
}
但它不允许指定数量......
使用以下代码,我可以创建一个表单来指定数量:
inlineformset_factory(Order, Order.items.through)
但不是显示所有可用项目的平面列表,而是显示3组带有下拉列表以选择所需项目。
如何将这两个approches组合起来,以获得一个列出所有可用项目的表单,允许用户指定数量?
非常感谢。
答案 0 :(得分:1)
[编辑]:删除了之前的答案,因为它是复制错误。
在此阶段,您不会处理订单。您提供的目录包含提交生成订单时的产品。因此,根据项目创建表单,为复选框和数量输入提供可以链接到项目的名称(合并项目的主键),然后在提交时生成订单。