2016-05-18 9 views
1

So mache ich einen Blog mit Django. Ich möchte, dass Benutzer nach Datum suchen können. Bevor ich eine forms.py-Datei mit umgeschaltet, war ich ein Formular verwenden, die diese enthalten:Making Django Formen wie HTML-Eingabe-Tags

<input type = "date"> 

Wenn ich dies tun, hat der Eingang einen netten kleinen Knopf auf der rechten Seite des Eingabefeld, das zieht einen vorgefertigten Kalender erstellen. Wenn jedoch meine Form kommt in einer forms.py Datei dieses Codes aus:

class Query(forms.Form): 
blog_author = forms.ChoiceField(choices = AUTHOR_NAME_CHOICES, label = "Author", required = False) 
blog_date = forms.DateField(label = "Publish Date", required = False) 

Es funktioniert ganz gut, aber ich verliere den Kalender HTML-Struktur. Wie kann ich das wieder da rein bekommen?

Hier ist, wo es in die Vorlage auf der search.html Seite kommt, als Referenz:

<form action = "/home/query/" method = "get"> 
    {% csrf_token %} 
    {{ form.as_table }} 
<input type = "submit" value = "Find"> 

Antwort

0

ich denke, die OP ist zu fragen, wie

zu bekommen

<input type="date">

html5 integrierte Formularfunktion ins Spiel

könnten Sie verwenden:


    custom_date = forms.CharField(label=u'Pick Date', widget = forms.TextInput(attrs={'type': 'date', })) 

Die obige Sie ein html5 type = "date" Ausgabe in Form machen wird.

Aber seien Sie gewarnt.

Browser haben unterschiedliche oder sogar nicht vorhandene Implementierungen für diese html5-Funktion. Sie sollten sich nicht darauf verlassen und stattdessen django-bezogene Datumsauswahl oder Widgets verwenden, die Ihnen die browserübergreifende Benutzeroberfläche garantieren.

+0

Danke für die Köpfe hoch. Es scheint in der Vergangenheit mit Chrome und Edge funktioniert zu haben, also bin ich einigermaßen zuversichtlich, aber ich werde es mir merken. –

+0

FF funktioniert nicht. In meinem Fall benutze ich das SelectDateWidget von django.forms.extras.widgets, anstatt JS-Hacks zu verwenden oder HTML5-Formfaktoren zu verwenden, mit einfachen Dropdown-Menüs für MM/TT/JJJJ oder im Format MM/JJJJ. Es ist einfach und hat weniger Chancen zu brechen. –

Verwandte Themen