Автоматическое заполнение wtforms Flask

#html #flask #autocomplete #flask-wtforms

#HTML #flask #автозаполнение #flask-wtforms

Вопрос:

Я хочу автоматически обновить поле «Общая сумма», используя количество и цену товара? есть ли какой-нибудь способ сделать это с помощью flask без javascript? Я хочу, чтобы общая сумма обновлялась при вводе количества и цены товара.

 class ItemForm(FlaskForm):
    item = StringField('Item')
    quantity=IntegerField('Quantity')
    item_price=IntegerField('Item Price')
    class Meta:
        csrf = False

class CostumerForm(FlaskForm):
    costumer_name=StringField('Costumer Name: ')
    item_detail = FieldList(FormField(ItemForm), min_entries=1)
    add_item = SubmitField(label='Add Item')
    remove_item = SubmitField(label='Remove Item')
    total_amount=IntegerField('Total Amount')
    paid_amount=IntegerField('Paid Amount')
    submit=SubmitField('Submit')
    proceed=SubmitField('Proceed')

@app.route('/costumer',methods=['GET','POST'])
@login_required
def costumer():
    form=CostumerForm()
    if form.add_item.data:
        form.item_detail.append_entry()
        return render_template('costumer.html', form=form)
    if form.remove_item.data:
        form.item_detail.pop_entry()
        return render_template('costumer.html', form=form)
    if form.validate_on_submit():
        item=breakdown(form.item_detail.data)[0]
        quantity=breakdown(form.item_detail.data)[1]
        item_price=breakdown(form.item_detail.data)[2]
        amount=breakdown(form.item_detail.data)[3]
        total_amount=breakdown(form.item_detail.data)[4]
        remaning_amount=total_amount-form.paid_amount.data
        sales=Costumer(admin_id=current_user.id,item_id=item,
                            costumer_name=form.costumer_name.data,quantity=quantity,
                            item_price=item_price,amount=amount,total_amount=total_amount,
                            paid_amount=form.paid_amount.data,remaning_amount=remaning_amount)
        db.session.add(sales)
        db.session.commit()
        return redirect(url_for('salesvoucher'))
    return render_template('costumer.html',form=form)

costumer.html

 

Продажи

{{form.hidden_tag()}}

{{form.costumer_name.label}}{{form.costumer_name(class=’form-control input-group-ig’,заполнитель =’Имя клиента’)}}

Элемент
Количество
Цена товара

{% для поля в form.item_detail %}

{% для f в поле%}
{{ f(class=’form-control’) }}
{% endfor %}

{% endfor %}

{{ form.add_item(class=’btn btn-primary’) }} {{ form.remove_item(class=’btn btn-опасность’) }}

{{form.proceed(class=’btn btn-primary’)}}

«`

Ответ №1:

ни в коем случае. даже если вы обновляете только во внешнем интерфейсе, вы должны использовать javascript.

Комментарии:

1. На самом деле я закончил изучать javascript… Это решило мою проблему