Django form.as_p DateField 不将输入类型显示为日期

新手上路,请多包涵

在我的第一个 Django 应用程序上工作,我有一个模型定义了一些 DateFields ,然后是该模型的 ModelForm ,即

模型.py

 class MyModel(models.Model):
    ...
    my_date = models.DateField('my date')
    ...

class MyModelForm(ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'

视图.py

 def show(request):
    form = MyModelForm
    template_name = 'myapp/show.html'
    return render(request,template_name,{'form':form})

然后在我的 html 中,我使用 .as_p 让 django 为我呈现表单

<form action="/show/" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>

但是 DateFields 具有输入类型文本,而不是日期。有没有办法改变这个?

原文由 C.B. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 597
2 个回答

您可以创建自定义小部件:

 from django import forms

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

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'
        widgets = {
            'my_date': DateInput()
        }

原文由 laidibug 发布,翻译遵循 CC BY-SA 3.0 许可协议

不需要 DateInput

 class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'
        widgets = {
            'my_date': forms.DateInput(attrs={'type': 'date'})
        }

原文由 jhrr 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题