私は小さなジャンゴインターネットストアを書いていますが、問題が発生しました。つまり、製品の印刷リスト (製品 ID が必要) と、同じページでそれらを購入するためのフォームが必要です。
def order(request):
if request.method == 'POST':
form = OrderForm(request.POST)
if form.is_valid():
# POST data processing
return HttpResponseRedirect('/cart/')
else:
form = OrderForm()
# here I would like to also use product_id from POST to generate products
# that have such id
return render(request, 'order.html', {
'form': form, 'products': products,
})
しかし、間違ってフォームを送信すると、OrderForm() が呼び出され、ID が失われます。この問題を解決する方法のヒントはありますか (おそらくその ID をどこかに保管してください)。
編集:私の店は特定の時間にいくつかの製品をレンタルするために使用され、カートに製品を追加することは、ユーザーが製品を予約したときに情報を保存する新しいオブジェクト賃貸を作成することを意味します
モデル:
class Rent(models.Model):
product = models.ForeignKey(Product)
paid = models.BooleanField()
begin_date = models.DateField(auto_now=False)
end_date = models.DateField(auto_now=False)
begin_hour = models.IntegerField(max_length=2, default=00)
end_hour = models.IntegerField(max_length=2, default=24)
そしてオーダーフォーム
class OrderForm(forms.Form):
begin_date = forms.DateField(label='date', required=True,
widget=extras.widgets.SelectDateWidget(years=range(2013, 2015)))
end_date = forms.DateField(required=True, initial=datetime.date.today,
widget=extras.widgets.SelectDateWidget(years=range(2013, 2015)))
begin_hour = forms.ChoiceField(required=True, choices=((str(x), x) for x in range(0, 25)))
end_hour = forms.ChoiceField(required=True, choices=(((str(x)), x) for x in range(0, 25)))