Wtforms.fields.html5 DateField 不作为普通的老 DateField 在 Flask

得到的问题 HTML5 Datepicker 提供表格中的值 Flask 使用WTF形式。 正如我削减的那样,相同的表格工作 HTML5 DateField 在一个简单的老香草wtf形式 DateField.

对于好奇:版本: Python 3.5.2, Flask: 0.11.1, Flask-WTF: 0.12

相应的代码将如下:

模型:


class Order/db.Model/:
__tablename__ = 'orders'
paid_date = db.Column/db.DateTime, nullable=True/


表格不应该重要,但是对于图片的完整性,这里的碎片 - Update.html:


<div class="form-group">
{{ form.paid_date.label }}
{% if form.paid_date.errors %}
{% for error in form.paid_date.errors %}
<p class="error-message">{{ error }}</p>
{% endfor %}
{% endif %}
{{ form.paid_date }}
</div>


最小控制器:


@app.route/'/orders/update/<int:order_number>', methods=['GET', 'POST']/
def update_order/order_number/:
order = Order.query.get/order_number/
if request.method == 'POST':
if not form.validate//:
return render_template/'update-order.html', form=form, order=order/
else:
form.populate_obj/order/
db.session.commit//
return redirect/url_for/'user'/
elif request.method == 'GET':
return render_template/'update-order.html', form=form, order=order/


这是广告的工作。


from flask_wtf import Form
from wtforms import DateField

class UpdateOrderForm/Form/:
paid_date = DateField/'Date Order Paid', format='%m/%d/%y',
render_kw={'placeholder': '6/20/15 for June 20, 2015'}/
submit = SubmitField/'Update Order'/


虽然以下休息时间:


from flask_wtf import Form
from wtforms.fields.html5 import DateField

class UpdateOrderForm/Form/:
paid_date = DateField/'Date Order Paid', format='%m/%d/%y',
render_kw={'placeholder': '6/20/15 for June 20, 2015'}/
submit = SubmitField/'Update Order'/


要描述这种行为,简单
DateField

我用字符串输入可视化形状 /它也显示当前值,必须在之后
form.populate_obj//

, 这允许我插入新日期,例如,
9/12/16

, 它返回控制器
form.paid_date

-这是
DateField

, 有意思
09/20/16


form.paid_date.data=2016-09-20

. 这在数据库中进行了测试和修复。

当我切换到选择日期时 HTML5, 这将是非常好的,我想象形式 datepicker /我想顺便将它安装在对象的当前日期/, 其中有
form.paid_date

, 如上所述,即
DateField


value

相同的。 但 datepicker 表明
mm/dd/yyyy

. 因此,如果我进入
09/20/2016

手动或在收集器的帮助下发送,
form.paid_date.data

回报
None

. 而且,我有


process_errors = <class 'list'="">: ['Not a valid date value']


raw_data = <class 'list'="">: ['2016-09-20']

.

因此,我发现返回数据,但不通过表格处理,从而放置在数据插槽中。 我可以写下代码来拉出它
raw_data

, 但是,当然,我错过了一些东西,或者是一个错误!?
</class></class></int:order_number>
已邀请:

八刀丁二

赞同来自:

我了解到了

浏览器 Chrome

raw_data

-这是
['2011-01-01']

, 因此,它与时间的格式相对应!

您必须像这样更改它:


format='%Y-%m-%d',

要回复问题请先登录注册