Django form.as_p DateField未将输入类型显示为d

2024-10-06 14:18:47 发布

您现在位置:Python中文网/ 问答频道 /正文

在开发我的第一个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有输入类型文本,而不是日期。有办法改变吗?


Tags: djangopy模型formdatemodelsrequestmy
3条回答

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

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()
        }

通过使用django-widget-tweaks包,您可以很简单地使用:

{% load widget_tweaks %}
{{form.date|attr:"type:date"}}

并将该字段设置为类中的日期时间字段:

date = forms.DateField()

不需要对DateInput进行子类划分。

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

相关问题 更多 >