À partir de Django1.8, vous pouvez passer un objet appelable à l'attribut choice de forms.ChoiceField. Ceci est pratique lorsque vous souhaitez demander dynamiquement des choix de formulaire.
Dans l'exemple ci-dessous, vous pouvez sélectionner 10 options toutes les heures à partir de la date et de l'heure actuelles. [^ 1]
forms.py
# -*- coding: utf-8 -*-
from django import forms
from dateutil import rrule
from datetime import datetime
class ExampleForm(forms.Form):
start_at = forms.ChoiceField(
choices=lambda: (
(str(t), t.strftime('%H:%M:%S'))
for t in rrule.rrule(rrule.HOURLY, dtstart=datetime.now(), count=10)
),
)
De cette façon, vous aurez des choix différents à chaque fois que vous rechargez votre navigateur.
URL de référence: Form fields | Django documentation | Django
[^ 1]: J'utilise python-dateutil.
Recommended Posts