django,在forms.ChoiceField中使用callable进行选择的例子

时间:2016-12-07 15:17:09

标签: python django choicefield

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

2 个答案:

答案 0 :(得分:2)

它们意味着它可以接受一个函数(或者可以调用的东西,因此名称),它应该返回它想要的值。这是一个快速粗略的例子:

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

forms.ChoiceField(choices=callableForChoices)

当您需要动态构建选项时,通常会使用此选项。

答案 1 :(得分:1)

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

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)