フォームからデータを取得しようとしていますが、フォームはリストに基づいて何度も再現されます。各アイテムに 1 つのフォーム。フォームはチェックボックスとテキストフィールドで構成されています。チェックボックスがオンになっている場合は、付随するテキストフィールド データも必要です。
ここで関連する質問をしました:
Django 検証エラー u"'' 値は 10 進数である必要があります。"
これはほとんど解決されましたが、今では新しい問題があります。
見る:
for item in request.POST.getlist('item_list'):
item_id = int(item)
item = Item.objects.get(id=item_id)
item_name = item.name
print item_name
list = List(name = item_name, created_on = now, edited_on = now)
for price in request.POST.getlist('price'):
if not price:
continue
print price
list_item.price = Decimal(price)
list_item.save()
item.delete()
上には表示されていませんが、now = timezone.now()
.
テンプレート:
<form action="" method="post">
{% csrf_token %}
{% for item in item_list %}
<input type="checkbox" name="item" value="{{item.id}}">{{item.name}} <input type="text" name="price"><br>
{% endfor %}
<input type="submit" value="Add Items">
</form>
フォームを送信すると、両方のループが 2 回実行され、すべてのアイテムの最終価格が同じになります。これは、コード全体に印刷関数を挿入し、表示される内容を分析して判断しました。私は問題がどこにあるかを理解していると思います.問題はそれを修正する方法です.どんな助けでも大歓迎です.