2016-04-02 65 views
1

我在使用瓶WTF这个命名约定形式几个要素...如何使用字符串从窗体访问嵌套属性?

# req_app_qty 
# req_app_note 
# req_main_qty 
# req_main_note 
# req_side_qty 
# req_side_note 
# req_bread_qty 
# req_bread_note 
# continued... 

我可以手动访问表单数据是这样的...

print "Manually (qty): " , form.req_app_qty.data  # works fine 
print "Manually (note): " , form.req_app_note.data # works fine 

但我想访问此表单数据,更自动化的方式...

categories = [ "app", "main", "side", "bread", "dessert", "bev", "uten", "cups", "misc"] 
for x in categories: 
    field1 = "req_%s_qty.data" % x # create a string to represent the attributes 
    field2 = "req_%s_note.data" % x # create a string to represent the attributes 
    qty_rqst = form.field1.data   # fails 
    rqst_note = form.field2.data   # fails 

    # also tried   
    print "QTY=", getattr(form, field1) # fails 
    print "Note:", getattr(form, field2) # fails 

我尝试了上述这些方法,他们都失败了......

第一种方法行失败,出现错误,指出表单没有属性'field1'或'field2'。

至于访问表单数据的第二个方法,下面几行失败,一个错误,指出没有属性“req_app_qty.data”

print "QTY=", getattr(form, field1) # fails 

如何创建一个字符串访问这些表单属性?

回答

0
qty_rqst = form.field1.data   # fails 

,因为你试图访问该字段field1,不存在这不起作用。

print "QTY=", getattr(form, field1) # fails 

这不起作用,因为您试图访问字段req_X_qty.data,该字段不存在。

您需要访问存在的字段,例如 FIELD1 =“req_%s_qty”%X#创建一个字符串来表示属性 FIELD2 =“:

print 'QTY=', getattr(form, 'req_app_qty').data 
+0

根据您的回答,我的类别做了以下修改来解决问题.. 对于x req_%s_note“%x#创建一个字符串来表示属性 qty_rqst = getattr(form,field1).data#now works rqst_note = getattr(form,field2).data#now works now – marvcode