django日期字段是charfield

django日期字段是charfield,django,Django,我正在使用django.forms模型表单。我有一个DoB,它是“datefield”,然而,当我显示DoB的形式时,它显示的像charfield。我应该怎么做才能让用户选择日期?感谢您的帮助。多谢各位 型号: dob = models.DateField(validators=[MinValueValidator(18), MaxValueValidator(70)],blank=True, null = True, verbose_name="Day of birth")

我正在使用django.forms模型表单。我有一个DoB,它是“datefield”,然而,当我显示DoB的形式时,它显示的像charfield。我应该怎么做才能让用户选择日期?感谢您的帮助。多谢各位

型号:

dob = models.DateField(validators=[MinValueValidator(18), MaxValueValidator(70)],blank=True, null = True, verbose_name="Day of birth")
HTML:


{{edit_profile | crispy}}
{%csrf_令牌%}
拯救

不幸的是,Django的默认
表单.DateField
仅呈现为
-标记

要获得该属性,您需要为其指定
type=“date”
属性

可以这样做:

#forms.py
类MyForm(forms.ModelForm):
# ... 字段定义
定义初始化(self,*args,**kwargs):
super()
self.fields['dob'].widget.attrs.update({'type':'date'})
这将呈现为以下HTML格式:


当然,您不必在表单的init方法中执行此操作。 您可以在任何可以访问表单字段的地方执行此操作


编辑:或者您可以使用javascript日期选择器,例如。

不幸的是,Django的默认值为
表单。日期字段
仅呈现为
-标记

要获得该属性,您需要为其指定
type=“date”
属性

可以这样做:

#forms.py
类MyForm(forms.ModelForm):
# ... 字段定义
定义初始化(self,*args,**kwargs):
super()
self.fields['dob'].widget.attrs.update({'type':'date'})
这将呈现为以下HTML格式:


当然,您不必在表单的init方法中执行此操作。 您可以在任何可以访问表单字段的地方执行此操作


编辑:或者您可以使用javascript日期选择器,如。

我过去遇到过类似的问题。对此有一个非常小的修正。在
forms.py
中进行以下更改:

from django.forms import ModelForm
from .models import Model_Name

class EquipmentForm(ModelForm):
    class Meta:
        model = Model_Name
        fields = 'dob'
        widgets = {'dob': DateInput()}

这应该能解决你的问题

我过去曾遇到过这样的问题。对此有一个非常小的修正。在
forms.py
中进行以下更改:

from django.forms import ModelForm
from .models import Model_Name

class EquipmentForm(ModelForm):
    class Meta:
        model = Model_Name
        fields = 'dob'
        widgets = {'dob': DateInput()}
class EditProfile(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ('full_name', 'dob','introduction','twitter','facebook','linked','hobbies', 'stock', 'weather',)
        
    def __init__(self, *args, **kwargs):
        super(EditProfile,self).__init__(*args, **kwargs)
        self.fields['dob'].widget = forms.DateInput(attrs={ 'type': 'date'})
这会解决你的问题

class EditProfile(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ('full_name', 'dob','introduction','twitter','facebook','linked','hobbies', 'stock', 'weather',)
        
    def __init__(self, *args, **kwargs):
        super(EditProfile,self).__init__(*args, **kwargs)
        self.fields['dob'].widget = forms.DateInput(attrs={ 'type': 'date'})