2016-07-29 11 views
-1

私は学生データを保存するためのフォームを作成しています。フォームをレンダリングしようとすると、データの代わりにテキスト入力が生成されます。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}} 

答えて

1

を使用して日付の入力をレンダリングしますがTextInputフィールドが表示されます、あなたはDateFieldを表示するようにフォームを上書きすることができます..

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

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

使用SelectDateWidget

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

ブラディミール・ダニラブ

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)) 
することにより、以前の回答でほんの少しの修正
関連する問題