flask - Flask 管理表单编辑规则导致“没有字段”错误
问题描述
在我的班级 RequestView(ModelView) 中:我有......
form_edit_rules = (
rules.FieldSet(('name', 'email', 'phone','shopname', 'invoice', 'territory'), 'Customer Information'),
rules.FieldSet(('address', 'address2', 'city','state','zipcode'), 'Shipping Information'),
rules.FieldSet(('carrier','num_labels','shipping_label_url', 'shipping_tracking_num', 'shipping_label_url_2', 'shipping_tracking_num_2', 'shipping_label_url_3', 'shipping_tracking_num_3', 'shipping_label_url_4', 'shipping_tracking_num_4'), 'Shipping Labels / Tracking'),
rules.FieldSet(('created','reason', 'status', 'sales_attention_comments', 'message', 'customer_notes','salesperson'), 'Return Information'),
rules.FieldSet(('pdffile','credit','audit_reason', 'audit_detail','light_plan','shipping_territory', 'notes','completed'), 'Auditor Fields')
)
出于某种原因,包含“电话”将其丢弃并导致此错误:
ValueError:0x11007bc88 处的表单 flask_admin.contrib.sqla.form.RequestForm 对象没有字段电话
如果我删除手机,它工作得很好。
我在模型中声明了电话,如下所示:
phone = db.Column(PhoneNumberType())
请注意,我有一个自定义前端表单,可以将数据很好地保存到电话字段。只有管理员编辑表单的这种修改会引发错误。
解决方案
可能是由于PhoneNumberType
字段flask-admin 的复杂性,不知道如何呈现它的小部件,因此它在表单上丢失了。
尝试将其添加为StringField
in form_extra_fields
,form_edit_rules
如下所示:
from wtforms.fields import StringField
class RequestView(ModelView):
form_extra_fields = {
'phone': StringField('phone')
}
form_edit_rules = (
rules.FieldSet(('name', 'email', 'phone','shopname', 'invoice', 'territory'), 'Customer Information'),
rules.FieldSet(('address', 'address2', 'city','state','zipcode'), 'Shipping Information'),
rules.FieldSet(('carrier','num_labels','shipping_label_url', 'shipping_tracking_num', 'shipping_label_url_2', 'shipping_tracking_num_2', 'shipping_label_url_3', 'shipping_tracking_num_3', 'shipping_label_url_4', 'shipping_tracking_num_4'), 'Shipping Labels / Tracking'),
rules.FieldSet(('created','reason', 'status', 'sales_attention_comments', 'message', 'customer_notes','salesperson'), 'Return Information'),
rules.FieldSet(('pdffile','credit','audit_reason', 'audit_detail','light_plan','shipping_territory', 'notes','completed'), 'Auditor Fields')
)
电话字段的验证被保留,所以我想它会解决你的问题。
推荐阅读
- vba - Microsoft Word VBA pos 更改?
- message-queue - 每个租户的消息队列
- sql-server - TSQL - 基于重量的多个位置的随机获胜者
- r - 如何计算多个因素和水平的平均值?
- excel - VBA - 如何在“For”语句中按标题引用列
- python - python logging fileConfig fileHandler args windows目录分隔符
- java - SerialOld GC 与 G1GC
- html - SVG Circle进度,如何在顶部启动仪表?
- java - SwipeRefreshLayout 永远加载并且没有完成发送请求的任务
- youtube-api - Youtube Api Explorer InvideoPromotion 禁止访问