簡體   English   中英

Flask Wtforms FieldList(FormField 用選項填充 SelectField 未附加到表單

[英]Flask Wtforms FieldList(FormField to populate a SelectField with choices is not appending to form

我正在嘗試使用 str 和列表的組合填充表單。 表單中的字符串字段填充沒有問題。 但是,表單中的選擇字段似乎只顯示它收到的列表中給出的最后一個條目,就好像它覆蓋了表單中的先前內容一樣。

如果列表(后來轉換為元組)是:[['one@email.com', 'two@email.com'], ['one@2email.com', 'two@2email.com]]

整個表單中的選項中顯示的內容將是:

一個@2email.com 兩個@2email.com

我已經嘗試了各種迭代,但到目前為止沒有運氣。

    class BulkAddFields(Form):
    ip_addr = StringField(label='ip_addr')
    dom_emails = StringField('dom_emails')
    new_emails = SelectField('new_emails', coerce=int)
  
    class BulkAddForm(FlaskForm):
    incidents = FieldList(FormField(BulkAddFields))
    submit = SubmitField('Submit')
    
    form = BulkAddForm()
    # i = str, d = str, n=list
    for i, d, n, in data:
        form.ip_addr = i
        form.dom_emails = d
        form.incidents.append_entry(form) 
        email = list(enumerate(n))
        for sub_form in form.incidents:
            sub_form.new_emails.choices = email

我添加了一個圖片/鏈接,顯示了字符串字段如何按預期復制到頁面下方,但選擇字段僅復制列表中的最后一項。

在此處輸入圖像描述

嘗試從

new_emails = SelectField('new_emails', coerce=int)

new_emails = SelectField('new_emails', coerce=str)

然后,您應該能夠將選擇作為列表傳遞。 讓我知道這是否有幫助。

下面是最終工作的代碼。 雖然我不喜歡每次都向表單添加一個字段,但我知道每次我想將它包含在 BulkAddFields 中時都會存在該字段,但不知道如何。

class BaseForm(FlaskForm):
    @classmethod
    def append_field(cls, name, field):
        setattr(cls, name, field)
        return cls

class BulkAddFields(BaseForm):
    ip_addr = StringField(label='ip_addr')
    dom_emails = StringField('dom_emails')

class BulkAddForm(BaseForm):
    incidents = FieldList(FormField(BulkAddFields))
    submit = SubmitField('Submit')

form = BulkAddForm()
    for i, d, n, in data:
        email = list(enumerate(n))
        bulkfields = BulkAddFields()
        bulkfields = bulkfields.append_field('new_emails',
                SelectField('New Emails', choices=email))
        form.ip_addr = i
        form.dom_emails = d
        
        form.incidents.append_entry(form)

帶有重復選擇字段的新電子郵件圖片

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM