2016-07-29 17 views
-1

Ich arbeite an einem Formular, das zum Speichern von Studentendaten verwendet wird. Wenn ich das Formular rendern wollte, erzeugt es eine Texteingabe anstelle von Daten.Django - Renderingdatum Feld in Vorlage

Wie machen i Datumseingabe django

forms.py

class StudentRegister(forms.Form): 

firstname = forms.CharField(max_length= 50) 
lastname = forms.CharField(max_length = 50, required=False) 
mail = forms.EmailField(required=False) 
dob = forms.DateField() 

html

{{form.dob}} 
{{form.dob.error}} 

Antwort

1

standardmäßig mit Django TextInput Feld angezeigt wird, können Sie Ihre Form außer Kraft setzen können DateField anzuzeigen ..

class DateInput(forms.DateInput): 
    input_type = 'date' 

class StudentRegisterForm(ModelForm): 
    class Meta: 
     model = StudentRegister 
     fields = '__all__' 
     widgets = { 
      'dob': DateInput() 
     } 
0

Verwendung:

from django.forms import SelectDateWidget 
# from django.forms.extras.widgets Django < 1.9 
from django.utils import timezone 

def past_years(ago): 
    this_year = timezone.now().year 
    return list(range(this_year, this_year - ago - 1)) 

class StudentRegisterForm(forms.Form): 
    ... 
    dob = DateField(widget=SelectDateWidget(years=past_years(100)) 
0

Nur eine kleine Korrektur auf der vorherigen Antwort von Vladimir Danilov

from django.forms import SelectDateWidget 
# from django.forms.extras.widgets Django < 1.9 
from django.utils import timezone 

def past_years(ago): 
    this_year = timezone.now().year 
    return list(range(this_year-ago-1, this_year)) #<------- Parameters should be inverted here 

class StudentRegisterForm(forms.Form): 
    dob = DateField(widget=SelectDateWidget(years=past_years(100))