0

フォームからデータを取得しようとしていますが、フォームはリストに基づいて何度も再現されます。各アイテムに 1 つのフォーム。フォームはチェックボックスとテキストフィールドで構成されています。チェックボックスがオンになっている場合は、付随するテキストフィールド データも必要です。

見る:

        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'):
                print price
                list_item.price = 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>

これは validationerror を返します[u"'' value must be a decimal number."]。入力している数値が小数ではないと言う理由がわかりません。ご協力いただきありがとうございます。

アップデート:

私が入れたときの出力print request.POST.getlist('price')[u'2.55', u'4.32', u'23.421', u'3.00', u'', u'']

4

1 に答える 1

2

リストに空priceの があります。スキップしてください。また、文字列を 10 進数にキャストします。

from decimal import Decimal

...

for price in request.POST.getlist('price'):
    if not price:
        continue
    list_item.price = Decimal(price)
    list_item.save()
于 2013-08-28T20:07:30.640 に答える