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. P >
acclamations p>
7 Réponses :
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 code> code>: où "valeur" est la variable contenant le champ DateTime . P> 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: p> (Remarque: il s'agit d'un code laid et non testé, juste Pour donner l'idée!) p> 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. P> P>
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',] code> dans paramètres.py code> n'était pas suffisant. J'ai dû spécifier le widget.
Donc, je pense que la solution proposée et acceptée n'est pas optimale car avec: pour un splitdateTimefield dans mon cas, mais pour que vous ne le changez que sur TimeWidget. P> J'espère que cela aide les autres personnes aussi. p> p>
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'))
modèle Timefield Modèle
dans le modèle P>
p> n'est pas affiché strong> p> django 1.4.1 p> p>
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'),
}
sur Django 1.9 Le format suivant doit fonctionner:
{{ yourData.value|time:"H:i" }}
Vous pouvez au moins modifier la sortie dans la méthode La valeur est désormais indiquée comme HH: mm dans les pages d'administration. P> p> __ str __ code> sur le modèle à l'aide de DateTime.time.isoformat (TimesPec = 'Minutes') Code>, comme ceci: < Pre> xxx pré>