Depuis Django 1.8, vous pouvez passer un objet appelable à l'attribut choice de forms.ChoiceField, ce qui est très pratique.

À 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

Depuis Django 1.8, vous pouvez passer un objet appelable à l'attribut choice de forms.ChoiceField, ce qui est très pratique.
[Python] Vous pouvez enregistrer un objet dans un fichier en utilisant le module pickle.
Le mur lors du passage du service Django de Python 2.7 à la série Python 3
Script Python qui peut vérifier l'état du serveur à partir du navigateur
L'histoire du champ de modèle Django disparaissant de la classe
Django Faites des choix uniquement pour l'établissement auquel vous appartenez
Y a-t-il un secret dans la fréquence des nombres de rapport de circonférence?
[Django] Que faire quand il y a de nombreux champs dans le modèle que vous souhaitez créer
Table de décalage Django Afficher uniquement les installations auxquelles vous appartenez
Django super introduction par les débutants Python! Partie 2 J'ai essayé d'utiliser les fonctions pratiques du modèle
[Pour les débutants chez AtCoder] Parlez de la quantité de calcul que vous voulez connaître approximativement