Ab Django1.8 können Sie ein aufrufbares Objekt an das Auswahlattribut von forms.ChoiceField übergeben. Dies ist praktisch, wenn Sie dynamisch nach Formularoptionen fragen möchten.
Im folgenden Beispiel können Sie stündlich 10 Optionen aus dem aktuellen Datum und der aktuellen Uhrzeit auswählen. [^ 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)
),
)
Auf diese Weise haben Sie bei jedem Neuladen Ihres Browsers unterschiedliche Auswahlmöglichkeiten.
Referenz-URL: Form fields | Django documentation | Django
[^ 1]: Ich verwende python-dateutil.
Recommended Posts