DateTime fields toujours aussi stocker secondes; Cependant, vous pouvez facilement dire le modèle pour afficher seulement les heures et les minutes, avec le filtre time
:
{{ value|time:"H:M" }}
où la « valeur » est la variable contenant le champ datetime.
Bien sûr, vous pouvez également recourir à d'autres astuces, comme couper les secondes du champ tout en économisant; il faudrait juste un petit changement au code de la vue manipulation de la forme, de faire quelque chose comme ceci:
if form.is_valid():
instance = form.save(commit=False)
instance.nosecs = instance.nosecs.strptime(instance.nosecs.strftime("%H:%M"), "%H:%M")
instance.save()
(Note: ceci est un code laid et non testé, juste pour donner l'idée)
Enfin, vous devriez noter que l'administrateur affichera toujours les secondes dans le champ.
Cela ne devrait pas être un gros problème, car admin ne devrait être utilisé que par un type d'utilisateurs qui peut être chargé de ne pas utiliser cette partie du champ.
Dans le cas où vous voulez également corriger l'administrateur, vous pouvez toujours affecter votre propre widget au formulaire, et ainsi l'administrateur l'utilisera. Bien sûr, cela signifierait un effort supplémentaire important.
{{valeur | temps: "H: i"}} a fonctionné pour moi. – GvS
Dans les formulaires de vues basées sur les classes Django, la définition de TIME_INPUT_FORMATS dans les paramètres a fonctionné pour moi. https://docs.djangoproject.com/fr/dev/ref/settings/#time-input-formats – maciek
@maciek: ça n'a pas marché pour moi. La définition de 'TIME_INPUT_FORMATS = [ '% H:% M', ]' dans 'settings.py' n'était pas suffisante. Je devais spécifier le widget. – SaeX