В документации Django говорится, что параметр options = для форм. ChoiceField может быть вызываемым. https://docs.djangoproject.com/en/1.10/ref/forms/fields/ Любой, кто может дать мне пример того, как это будет выглядеть? Больше не можете найти об этом в официальной документации.django, примеры использования вызываемых для выбора форм.ChoiceField
ответ
Они означают, что он может принимать функцию (или что-то, что можно назвать, отсюда и имя), которое должно возвращать значения, которые он хочет. Вот краткий пример:
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)
Большое вам спасибо! Можно ли вызвать функцию извне формы.py? – Janic
Конечно, просто импортируйте его из другого модуля. – lucasnadalutti
Да, именно то, что я пытаюсь сделать. Но знаете ли вы, могу ли я выполнять функцию извне формы.py? – Janic
Абсолютно. Просто импортируйте его и используйте его, как и любой другой. – joeb