【问题标题】:How to pass values from html element to a form field django如何将值从html元素传递到表单字段django
【发布时间】:2014-06-13 16:37:46
【问题描述】:

我有一个显示日历的特定 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()

但这会导致如果用户输入的值不是所需的日期格式,网站就会崩溃

【问题讨论】:

    标签: html django forms django-1.6


    【解决方案1】:

    您可以更改 init_date 的小部件(可能是隐藏输入)并使用 javascript 填充它,而不是排除您的 init_date 模型字段:

    class AddVisionForm(forms.ModelForm):
        class Meta:
            model = Visions
            widgets = {'init_date': forms.HiddenInput()}
    

    您可以从现场验证过程中采取方法。

    【讨论】:

      【解决方案2】:

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

      例如

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-09
        • 1970-01-01
        • 2017-07-29
        • 2019-05-29
        • 2010-12-25
        • 2010-12-17
        • 2013-11-19
        相关资源
        最近更新 更多