django,在 forms.ChoiceField 中使用可调用选项的示例

django, examples of using a callable for choices in forms.ChoiceField

在 Django 文档中,它说 forms.ChoiceField 的 choices= 参数可以是可调用的。 https://docs.djangoproject.com/en/1.10/ref/forms/fields/ 那里的任何人都可以给我一个例子吗? 在官方文档中找不到更多相关信息。

它们的意思是它可以接受一个函数(或可以调用的东西,因此得名)应该return它想要的值。这是一个简单粗略的例子:

def callableForChoices():
    return [("Value1", "Name1"), ("Value2", "Name2"), ("Value3", "Name3")]

forms.ChoiceField(choices=callableForChoices)

这通常在您需要动态构建选项时使用。

我能想到的最简单的例子:

DAY_CHOICES = (
    ('2016-01-02', 'Today'),
    ('2016-01-01', 'Yesterday'),
)

forms.ChoiceField(choices=DAY_CHOICES)

当然,这些是静态值是不可取的。因此,可调用函数是这里的最佳选择:

def get_days():
    return (
        (date.today(), 'Today'),
        (date.today() - timedelta(1), 'Yesterday'),
    )

forms.ChoiceField(choices=get_days)