Python WTForms Alchemy ModelForm不使用现有对象验证
下面是我的代码,来自一个简单的示例。我一直在努力研究如何让ModelForms进行验证。验证工作与标准表单没有问题。任何关于我做错了什么的帮助都是感激的Python WTForms Alchemy ModelForm不使用现有对象验证,python,flask,wtforms,flask-wtforms,Python,Flask,Wtforms,Flask Wtforms,下面是我的代码,来自一个简单的示例。我一直在努力研究如何让ModelForms进行验证。验证工作与标准表单没有问题。任何关于我做错了什么的帮助都是感激的 from flask.ext.wtf import Form from wtforms_alchemy import model_form_factory class User(UserMixin, db.Model): __tablename__ = 'users' id = db.Column(db.Integer, prima
from flask.ext.wtf import Form
from wtforms_alchemy import model_form_factory
class User(UserMixin, db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(128), nullable=False, unique=True)
username = db.Column(db.String(32), nullable=False, unique=True)
BaseModelForm = model_form_factory(Form)
class ModelForm(BaseModelForm):
@classmethod
def get_session(cls):
return db.session
class UserForm(ModelForm):
class Meta:
model = User
flask_shell >> uf = UserForm(obj=jeff, csrf_enabled=False)
flask_shell >> uf.validate() #False
flask_shell >> uf.errors
{'email': ['This field is required.'],
'password_hash': ['This field is required.'],
'username': ['This field is required.']}
flask_shell >> uf.__dict__
{'SECRET_KEY': '',
'_errors': None,
'_fields': OrderedDict([('csrf_token',
<wtforms.ext.csrf.fields.CSRFTokenField at 0x1075239e8>),
('email',
<wtforms_components.fields.html5.StringField at 0x107523ac8>),
('username',
<wtforms_components.fields.html5.StringField at 0x107523b70>),
'_obj': <User 'jeff'>,
'_prefix': '',
'csrf_enabled': False,
'csrf_token': <wtforms.ext.csrf.fields.CSRFTokenField at 0x1075239e8>,
'email': <wtforms_components.fields.html5.StringField at 0x107523ac8>,
'meta': <wtforms.form.Meta at 0x107523898>,
'username': <wtforms_components.fields.html5.StringField at 0x107523b70>}
来自flask.ext.wtf导入表单
来自wtforms\u alchemy进口模型\u form\u工厂
类用户(UserMixin,db.Model):
__tablename_uu='users'
id=db.Column(db.Integer,主键=True)
email=db.Column(db.String(128),null=False,unique=True)
username=db.Column(db.String(32),nullable=False,unique=True)
BaseModelForm=模型形式工厂(形式)
类模型形式(BaseModelForm):
@类方法
def get_会话(cls):
返回db.session
类UserForm(ModelForm):
类元:
模型=用户
flask\u shell>>uf=UserForm(obj=jeff,csrf\u enabled=False)
烧瓶外壳>>uf.validate()#假
烧瓶外壳>>uf.errors
{'email':['此字段为必填项'],
“密码\u散列”:[“此字段是必需的。”],
“用户名”:[“此字段是必需的”。]}
烧瓶外壳>>超滤__
{'SECRET_KEY':'',
“_错误”:无,
“_字段”:OrderedDict([('csrf_标记],
),
(“电子邮件”,
),
(“用户名”,
),
“_obj”:,
“_前缀”:”,
“csrf_已启用”:False,
“csrf_令牌”:,
“电子邮件”:,
“元”:,
“用户名”:
jeff在这里是什么意思?uf=UserForm(obj=jeff,csrf_enabled=False)是模型“User”的对象吗?@VijeshVenugopal是类型“User”的对象jeff很可能是用户对象“jeff”的错误。请检查它是否具有所有值。jeff在这里是什么意思?uf=UserForm(obj=jeff,csrf_enabled=False)它是“User”模型的对象吗?@VijeshVenugopal是jeff是UserType类型的对象很可能是用户对象“jeff”的错误。请检查它是否具有所有值。