我正在使用一种表格,用户可以通过该表格来管理企业的库存。具体来说,我希望能够在StringField中添加一定数量的库存,而在单独的StringField中-能够添加不超过所添加库存量的销售额。
我也想知道是否有可能使用户仅在字段中输入数字。我尝试使用IntegerField,但最终出现名称错误,指出无法识别IntegerField。
from wtforms import Form, StringField, RadioField, SelectField, TextAreaField, validators
class CreateGPUForm(Form):
GPUBrand = SelectField('GPU Brand',default='NVIDIA' ,choices=[('NVIDIA', 'NVIDIA'),('MSI/Micro Star International', 'MSI/Micro Star International'),('Zotac', 'Zotac'),('EVGA', 'EVGA'),('Galax', 'Galax'),('Power Color', 'Power Color'),('Sapphire', 'Sapphire')], render_kw={'readonly': False})
GPUName = StringField('GPU Name/Series', [validators.Length(min=1), validators.DataRequired()], render_kw={'readonly': False})
GPUStock = IntegerField('Enter GPU Stock To Add', [validators.Length(min=1), validators.DataRequired()])
GPUUnitPrice = StringField('GPU Manufacturing Price', [validators.Length(min=1), validators.DataRequired()], render_kw={'readonly': False})
GPUSalePrice = StringField('GPU Retail Price', [validators.Length(min=1), validators.DataRequired()], render_kw={'readonly': False})
GPUSales = StringField('Amount of GPUs Sold', [validators.Length(min=1), validators.DataRequired()], render_kw={'readonly': False})
要在提交给服务器之前进行客户端验证,您将需要使用Javascript。
如果您要在用户提交表单后执行服务器端验证(以便您可以在刷新的表单上重新发送错误,则可以编辑验证钩子:
class CreateGPUForm(Form):
# ...
def validate(self):
"""Overwrite the Base validation function"""
rv = Form.validate(self)
if not rv:
return False
# now custom validation code:
if self.GPUSales.data > self.GPUStock.data:
self.GPUSales.errors.append('There is not enough stock...')
return False
return True
有一个IntegerField,但您尚未导入它。查看WTF文档