2017-08-16 80 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

相關問題