我有一個表單,必須驗證並將數據保存到數據庫中。我有一個SQLAlchemy
模式叫Campaign
它看起來像這樣使用WTForms進行表單驗證和使用Flask中的表單數據自動填充SQLAlchemy模型
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Campaign(db.Model):
__tablename__ = 'campaigns'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
priority = db.Column(db.SmallInteger)
starts_at = db.Column(db.Date)
ends_at = db.Column(db.Date)
.... bla bla bla
現在我有一個WTForm
形式這樣
from flask.ext.wtf import Form, TextField, IntegerField, DateField, Required, NumberRange
class CampaignForm(Form):
def date_validation(form, field):
#some validation on date
name = TextField(validators=[Required()])
priority = IntegerField(validators=[Required(), NumberRange(min=1,max=100)])
start_date = DateField(validators=[Required(), date_validation])
end_date = DateField(validators=[Required(), date_validation])
... bla bla bla
現在驗證,驗證和保存表單數據,我可以這樣做這是我的view
code in Flask
class CampaignsView(MethodView):
def post(self):
"""
For creating a new campaign
"""
form = CampaignForm(request.form)
if form.validate():
campaign = Campaign(form.name.data, form.priority.data, and so on)
session.add(campaign)
現在上面的代碼是愚蠢的,因爲我必須硬編碼視圖中的每個字段名稱。有沒有其他的方式可以填補我的模型領域與表單域? 感謝
太好了。有什麼辦法可以避免爲表單生成一次相同的邏輯類,並且一次爲數據庫生成一次?人們能爲兩者生成一個類嗎? – famargar
@famargar不知道我是否理解你的問題? –