[PYTHON] Ab Django 1.8 können Sie ein aufrufbares Objekt an das Auswahlattribut von forms.ChoiceField übergeben, was sehr praktisch ist.

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

Ab Django 1.8 können Sie ein aufrufbares Objekt an das Auswahlattribut von forms.ChoiceField übergeben, was sehr praktisch ist.
[Python] Sie können ein Objekt mithilfe des Pickle-Moduls in einer Datei speichern.
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
Python-Skript, das den Status des Servers über den Browser überprüfen kann
Die Geschichte des Django-Modellfeldes verschwindet aus der Klasse
Django Treffen Sie Ihre Auswahl nur für die Einrichtung, zu der Sie gehören
Gibt es ein Geheimnis in der Häufigkeit der Umfangszahlen?
[Django] Was tun, wenn das zu erstellende Modell viele Felder enthält?
Django-Schichttabelle Zeigen Sie nur die Einrichtungen an, zu denen Sie gehören
Django super Einführung von Python-Anfängern! Teil 2 Ich habe versucht, die praktischen Funktionen der Vorlage zu nutzen
[AtCoder für Anfänger] Sprechen Sie über den Rechenaufwand, den Sie grob wissen möchten