11
votes

Django Timefield modèle sans secondes

salutations, J'essaie de mettre en place un modèle Timefield qui se compose uniquement de format HH: mm (c'est-à-dire 16:46), je sais qu'il est possible de formater un objet de temps python ordinaire, mais je suis perdu sur la façon de gérer cela avec Django.

acclamations


0 commentaires

7 Réponses :


6
votes

DateTime champs va toujours stocker aussi quelques secondes; Cependant, vous pouvez facilement dire au modèle d'afficher les heures et les minutes, avec le filtre : xxx

où "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 épargnant; Il ne nécessiterait qu'une petite modification du code dans la vue qui manipule la forme, de faire quelque chose comme ceci: xxx

(Remarque: il s'agit d'un code laid et non testé, juste Pour donner l'idée!)

Enfin, vous devez noter que l'administrateur affichera toujours les secondes dans le champ.
Cependant, cela ne devrait pas être une grande préoccupation, car l'administrateur ne doit être utilisé que par une sorte d'utilisateurs pouvant être chargés de ne pas utiliser cette partie du champ.
Si vous souhaitez corriger également l'administrateur, vous pouvez toujours affecter votre propre widget au formulaire et ainsi avoir l'administrateur l'utiliser. Bien sûr, cela signifierait un effort supplémentaire important.


2 commentaires

Dans les vues de la classe Django's 'Cadrage de formulaires Time_Input_Formats dans les paramètres travaillés pour moi. docs.djangoproject.com/fr/dev/ref/Settings / # entrée temporelle-forma ts


@Maciek: Cela n'a pas fonctionné pour moi. Réglage time_input_formates = ['% h:% m',] dans paramètres.py n'était pas suffisant. J'ai dû spécifier le widget.



5
votes

Donc, je pense que la solution proposée et acceptée n'est pas optimale car avec: xxx

pour un splitdateTimefield dans mon cas, mais pour que vous ne le changez que sur TimeWidget.

J'espère que cela aide les autres personnes aussi.


0 commentaires

10
votes

widget Django peut être utilisé pour y parvenir facilement.

from django import forms

class timeSlotForm(forms.Form):
    from_time = forms.TimeField(widget=forms.TimeInput(format='%H:%M'))


0 commentaires

2
votes

modèle Timefield Modèle

dans le modèle

est affiché xxx

n'est pas affiché xxx

django 1.4.1


0 commentaires

1
votes

pour un modelform code>, vous pouvez facilement ajouter un widget comme celui-ci, pour éviter les secondes affichées (il suffit d'afficher HH: mm):

class MyCreateForm(forms.ModelForm):

    class Meta:
        model = MyModel
        fields = ('time_in', 'time_out', )
        widgets = {
            'time_in': forms.TimeInput(format='%H:%M'),
            'time_out': forms.TimeInput(format='%H:%M'),
        }


0 commentaires

0
votes

sur Django 1.9 Le format suivant doit fonctionner:

{{ yourData.value|time:"H:i" }}


0 commentaires

1
votes

Vous pouvez au moins modifier la sortie dans la méthode __ str __ sur le modèle à l'aide de DateTime.time.isoformat (TimesPec = 'Minutes') , comme ceci: < Pre> xxx

La valeur est désormais indiquée comme HH: mm dans les pages d'administration.


0 commentaires