我有一个正确映射到我的模型的表单。我想要做的是让用户使用三个SelectField
(日,月,年)输入他们的出生日期,并将这三个值的组合写入我的model.dateOfBirth
。我知道现有的DateField
和DateTimeField
选项,但它们都不合适。
我使用FormField
尝试了此操作,但是当我在整个表单populate_obj
上调用'str' object has no attribute 'day'
时它失败了,假设它正在尝试设置model.dateOfBirth.day
当然,不存在。
我可以从form.data
提取所有相关数据并写入populate_obj
之外的模型,但我似乎无法移除dateOfBirth
数据以停止populate_obj
从失败。关于如何在表单创建时传递obj
时我可以预填表单数据当然还有其他问题,但我现在愿意牺牲它。
我看过使用FieldList
,但文档说它将所有数据都放回到列表中,而不是dict,这仍然会给我同样的问题
class DOBForm(Form):
day = SelectField(u'Please enter your date of birth',
choices=days,
validators=[InputRequired(message=u' ')]
)
month = SelectField(u' ',
choices=months,
validators=[InputRequired(message=u' ')]
)
year = SelectField(u' ',
choices=years,
validators=[InputRequired(message=u' ')]
)
和
class MainForm(Form):
dateOfBirth = FormField(DOBForm)
class Model
dateOfBirth = db.Column('dateOfBirth', Date)
答案 0 :(得分:0)
你可以为此编写一个函数。
from datetime import datetime
def date_of_birth(**kwargs):
day = kwargs['day']
month = kwargs['month']
year = kwargs['year']
strip="-"
seq = (day,month,year)
date = datetime.strptime(strip.join(seq) , '%d-%m-%Y')
birthday = stringDate.strftime('%d-%m-%Y')
dob = Model()
dob.dateOfBirth = birthday
session = Session()
session.add(dob)
session.commit()
retval = row2dict(dob)
session.close()
return retval
现在你可以调用这个函数了。 我还没有测试过这个功能。如果您收到任何错误或有任何疑问,请与我们联系。