2016-12-24 2 views
0

Gibt es eine Möglichkeit, das Format für Datetime-Felder zu ändern, wenn CreateView oder UpdateView verwenden? Ich versuche, das Formular zu erhalten, um Daten in Form von etwas wie "2016-12-29 03:49 PM" zu akzeptieren. Ich weiß, dass das Format '%Y-%m-%d %I:%M %p' sein sollte, und das testet gerade in der Schale gut. Ich weiß einfach nicht, wie man es mit CreateView oder UpdateView funktioniert, aber es scheint, dass es möglich sein sollte.Wie Ändern des Zeitformats in Django in einer generischen klassenbasierten Ansicht

Antwort

1

Sie müssen Ihre Formularklasse aktualisieren, um andere Eingabeformate zu akzeptieren. Das Formular sollte wie folgt aussehen:

class YourForm(ModelForm): 
    date_of_birth = DateTimeField(input_formats='%Y-%m-%d %I:%M %p') 
    class Meta: 
     model = YourModel 

Allerdings ist es wahrscheinlich besser, alle Ihre akzeptablen Eingabeformate in einer Variablen setzen und sie von Ihrem settings.py wie folgt aufrufen:

settings.py 
DATE_INPUT_FORMATS = [ 
    '%Y-%m-%d %H:%M:%S', 
    '%m/%d/%Y %H:%M:%S', 
    '%Y-%m-%d %I:%M %p', 
] 

forms.py 
class YourForm(ModelForm): 
    date_of_birth = DateTimeField(input_formats=settings.DATE_INPUT_FORMATS) 
    class Meta: 
     model = YourClass 

Schließlich Ich würde es dem Benutzer nicht überlassen, ein Datum manuell einzugeben (vorausgesetzt, diese Ansicht ist für Menschen), geben Sie ihnen ein DateTime-Widget, um es für sie auszuwählen. Sie können hier Informationen über den Widgets finden: https://docs.djangoproject.com/en/1.10/ref/forms/widgets/

und Informationen über das Datetime-Formularfeld hier: https://docs.djangoproject.com/en/1.10/ref/forms/fields/#datetimefield

Verwandte Themen