在灵巧度中设置另一个字段后,动态更改一个字段的下拉选项形式。计划

2024-10-03 04:32:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在为一个字段设置了另一个字段之后,在动态更改一个字段的下拉选项时失败了窗体。架构. 在

词汇表基于sql数据库。在

具体来说,我想在选择县之后更新乡镇词汇表选项。在

现在,我只需要列出所有乡镇的名单,而不考虑所选国家。因为所有试图动态改变事物的尝试都会导致错误。在

如有任何帮助,我们将不胜感激。谢谢!在

从站点.py公司名称:

from selectionProvider import SelectionProvider
vocabProvider = SelectionProvider()

@grok.provider(IContextSourceBinder)
def countySource(context):
    return vocabProvider.getVocabulary('county')

@grok.provider(IContextSourceBinder)
def townshipSource(context):
    return vocabProvider.getVocabulary('township')

class IESurrenderSite(form.Schema):

    county = schema.Choice(
        title=_(u"County"),
        source=countySource,
        required=True,
    )

    township = schema.Choice(
        title=_(u"Township"),
        source=townshipSource,
        required=True,
    )

。。。在

从selectiorProvider.py公司名称:

^{pr2}$

Tags: 词汇表py名称grokdef选项context公司
1条回答
网友
1楼 · 发布于 2024-10-03 04:32:30

您可以使用plone.formwidget.masterselect 像这样(未经测试,但可以让您了解其工作原理):

from zope import schema
from plone.supermodel import model
from plone.formwidget.masterselect import _
from plone.formwidget.masterselect import MasterSelectBoolField
from plone.formwidget.masterselect import MasterSelectField


def getTownshipDynVocab(master):
    CountryID = master_value

    # search for your township entries by CountryID
    # and return it as a DisplayList
    return townshipDynamicVocab


class IESurrenderSite(model.Schema):

    county = MasterSelectField(
        title=_(u"County"),
        source=countySource,
        slave_fields=(
            # Controls the vocab of township
            {'name': 'township',
             'action': 'vocabulary',
             'vocab_method': getTownshipDynVocab,
            },
        ),
        required=True,
    )

    township = schema.Set(
        title=_(u"Township"),
        value_type=schema.Choice(),
        required=False,
    )

相关问题 更多 >