2017-08-16 104 views
0

我希望能够将cd上每个轨道的轨道名称和开始时间都收集到表格中的dict或json列中。 我已经定义了一个formfield赶上与音轨名称的数据并将其保存在一个字典:Wtforms-使用每个键有两个值的formfield创建字典

class SeperateTracks(NoCsrfForm): 
     track1 = TextField('track1') 
     track2 = TextField('track2') 
     track3 = TextField('track3') 
     track4 = TextField('track4') 

class SendForm(Form): 
     alltracks = FormField(SeperateTracks) 

这将创建一个字典,看起来像这样如此:

{“TRACK1”:“歌曲名1“,”曲目2“:”歌曲名2“,”曲目3“:”歌曲名3“,”曲目4“:”歌名4“}

我想实现的是每个曲目有两个TextFields-曲目名称和一首曲目的开始时间。 我意识到,在创造更多的领域方面,以适应这一点,我可以简单地创造更多的文本字段来保存像这样的开始时间数据:

class SeperateTracks(NoCsrfForm): 
     track1 = TextField('track1') 
     track2 = TextField('track2') 
     track3 = TextField('track3') 
     track4 = TextField('track4') 
     starttime1 = TextField('starttime1') 
     starttime2 = TextField('starttime2') 
     starttime3 = TextField('starttime3') 
     starttime4 = TextField('starttime4') 

然而,这不是时间与相应的轨道关联。推荐的方法是什么?

回答

0

你想要的东西是这样的:

class Track(NoCsrfForm): 
    songname = StringField('Song Name') 
    starttime = StringField('start time') 

class SeparateTracks(NoCsrfForm): 
    tracks = FieldList(FormField(Track), min_entries=1, max_entries=4) 

我在max_entries根据你的榜样做出的假设,但它没有严格要求,你可以在任何地方管理这种方式和1之间的N个条目。

在Python中的数据会看起来像:

[{songname: "name 1", starttime: "123"}, {songname: "name 2", starttime: "456"}, ... ] 

更多信息:

+0

优秀感谢我给一个去,并送还给你。一个问题 - 例如,如果我想渲染最大4个条目中特定的特定条目,例如第三个条目,我将如何渲染它。我认为渲染min_entries的值是{{form.tracks}},但如果我想呈现特定的值呢? – neilH

+0

您可以渲染'{{form.tracks.entries [2]}}'获得第三个条目(零索引)。你也可以迭代'form.tracks'来获得所有的条目,等等。 – Crast

相关问题