【问题标题】:Django - rendering date field in templateDjango - 在模板中呈现日期字段
【发布时间】:2016-12-04 12:57:45
【问题描述】:

我正在制作一个用于存储学生数据的表单。当我尝试渲染表单时,它会生成文本输入而不是数据。

我如何使用 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}}

【问题讨论】:

    标签: django django-forms django-templates


    【解决方案1】:

    对 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))
    

    【讨论】:

      【解决方案2】:

      使用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))
      

      【讨论】:

        【解决方案3】:

        默认情况下Django会显示TextInput字段,你可以覆盖你的表单来显示DateField..

        class DateInput(forms.DateInput):
            input_type = 'date'
        
        class StudentRegisterForm(ModelForm):
            class Meta:
                model = StudentRegister
                fields = '__all__'
                widgets = {
                    'dob': DateInput()
                }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-30
          • 2019-02-23
          • 2014-10-01
          • 1970-01-01
          • 2019-10-27
          • 2012-05-04
          • 2011-05-06
          • 1970-01-01
          相关资源
          最近更新 更多