如何将值从html元素传递到表单字段django

如何将值从html元素传递到表单字段django,html,django,forms,django-1.6,Html,Django,Forms,Django 1.6,我有一个显示日历的特定html输入元素,是否可以将此元素添加到我的表单并进行验证?我排除了表单中的模型字段,因此在渲染时不能在表单字段中使用 class AddVisionForm(forms.ModelForm): class Meta: model = Visions exclude = ('init_date', ) 我的方法是将post传递给表单中的save方法:form.save(request.post)

我有一个显示日历的特定html输入元素,是否可以将此元素添加到我的表单并进行验证?我排除了表单中的模型字段,因此在渲染时不能在表单字段中使用

class AddVisionForm(forms.ModelForm):
    class Meta:
        model = Visions
        exclude = ('init_date',
                   )
我的方法是将post传递给表单中的save方法:
form.save(request.post)
,并将值保存到实例:

def save(self, *args, **kwargs):
    instance = super(AddVisionForm, self).save(commit=False)
    post = args[0]
    instance.init_date = post['init_date']
    instance.save()

但这会导致如果用户输入了所需日期格式以外的其他值,则会导致站点崩溃

您可以使用form类中的Meta小部件自定义html输入

比如说

class AddVisionForm(forms.ModelForm):
    class Meta:
        model = Visions
        widgets = {
            'init_date': TextInput(attrs={'class': 'date-calendar'}),
        }

您可以使用选择器“.date calendar”处理输入,并使用您喜欢的javascript函数(如jquery ui calendar)将该输入转换为日历。

您可以更改初始日期的小部件(可能是隐藏的输入),并使用javascript填充它:

class AddVisionForm(forms.ModelForm):
    class Meta:
        model = Visions
        widgets = {'init_date': forms.HiddenInput()}
您可以采用现场验证过程的方法