繁体   English   中英

我可以修改添加表单字段,从外部 API 获得的数据中获得 select 列表吗?

[英]Can I modify add form field, to have select list from data got by external API?

我想从添加表单中扩展一个字段,以便能够从外部 API 获得的 select 列表中选择选项。让我解释一下这个问题。 我有这样的 model:

class ContactGroup(Model):
    id = Column(Integer, primary_key=True)
    name = Column(String(50), unique=True, nullable=False)
    my_field_id = Column(Integer, nullable=False)

    def __repr__(self):
        return self.name

当我想添加新实体时,默认情况下由 app-builder 创建的表单,我必须“手动”指定 my_field_id。 所以我的问题是,我可以将 my_field_id 扩展到而不是指定 integer 我将有一个 select 列表,其中包含外部 API 返回的数据。Api 提供的数据为 json,例如:

{
  data: [
    {
      id: 1,
      name: "My field"
    }
    ...
  ]
}

还是对于默认的应用程序构建器 forms 来说太复杂了,我必须完全重写添加表单?

谢谢!

我知道这是迟到的答案,但是,如果有人想做类似的事情,那么SelectField就是一个答案。 您可以在 init 方法中指定 select 选项,如下所示:

class ContactGroup(Model):
    id = Column(Integer, primary_key=True)
    name = Column(String(50), unique=True, nullable=False)
    my_field_id = SelectField(
        "Legal entity",
        widget=Select2Widget(),
        description="Select a legal entity",
        validators=[validators.Optional()],
        coerce=int,
    )

    def my_field_id_query():
        # get data here...
    
    def __init__:
        super().__init__(*args, **kwargs)
        self.my_field_id.choices = [(choice["id"], choice["name"]) for choice in my_field_id_query()] 

更详细的解释在这里:

https://github.com/dpgaspar/Flask-AppBuilder/issues/1717

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM