1つまたは複数のアイテムを注文できるウィザードを作成しています(Django Formtoolsを使用しています)。Djangoフォームとmany2many.throughフィールド
私は古典的なカートシステムを避け、可能な限りシンプルな購入をしたいと思います。私のナビゲーションの提案は、3ページ/ステップしか持たないことです:
- 最初のページには利用可能なすべての項目が表示されます。それらのアイテムを選択し、訪問者が数量を指定することができます。
- 2ページ目は、注文の要約を行い、来場者が
- その詳細を記入するよう求められ、最後のページには、私が最初のステップのためのフォームを作成するトラブルを抱えていると私は」オーダー
を確認します私が試した2つの選択肢の中間を見つけるための助けを探していました。
私のDjangoのモデルは、この(デモンストレーションのために簡略化)のように見える:私はすべての利用可能なアイテムの一覧表示することができるよ
次のModelFormを使用して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()
:
class OrderSelectionForm(forms.ModelForm):
class Meta:
model = Order
fields = ('items',)
widgets = {
'items': forms.CheckboxSelectMultiple(),
}
をしかし、それはdoesnの数量を指定することができます。
次のコードを使用して、数量を指定できるフォームを作成することができます。
inlineformset_factory(Order, Order.items.through)
しかし、すべての利用可能な項目のフラットなリストを表示する代わりに、ドロップダウンリストで希望の項目を選択する3つのセットが表示されます。
2つの承認を組み合わせて、使用可能なすべてのアイテムを一覧表示し、数量を指定できるようにするにはどうすればよいですか?
ありがとうございます。
こんにちは、私の質問を編集したのは、パッケージへの参照が誤植でした(わかりやすくするため、私の質問ではPackageをitemに変更しました)。 – user1415785