【问题标题】:How to allow empty forms in a formset django如何在表单集 django 中允许空表单
【发布时间】:2016-05-16 07:30:54
【问题描述】:

我想检查表单集是否为空。如果为空,则不要在数据库中创建新记录。我怎样才能做到这一点?。尽管我在 form.py 中输入了 required=False,但请帮助解决这个问题。这是我的代码:

class ExtraValueFormRight(forms.ModelForm):
    label = forms.CharField(required=False,
                        widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Sub Title'}))
    somevalue = forms.CharField(required=False,
                            widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Some Value'}))

class Meta:
    model = OrderHeader
    fields = ('label', 'somevalue')

HTML:

{{ formset.management_form }}
{% for form in formset.forms %}
     <div class='table-left'>
         <table class='no_error'>
              <div class="form-group">
                  <div class="col-lg-12">
                       {{ form.label }}
                  </div>
               </div>
               <div class="form-group">
                   <div class="col-lg-12">
                        {{ form.somevalue }}
                   </div>
               </div>
          </table>
      </div>
{% endfor %}

【问题讨论】:

  • 通常 django ModelFormSet 正是这样做的(如果用户没有填写表格,它们不会在 DB 中创建新对象)。你能展示你的森林创建代码吗? (你的视图代码,我猜)。请注意,在模板代码中,您在 formset 循环中为每个表单缺少一个 {{ form.id }}

标签: jquery python django


【解决方案1】:

当您使用 ModelForm 时,您在表单中使用的模型字段的属性也会影响表单的验证。您应该从您的模型属性中检查 labelsomevalue 是否可以为空。如果您想为模型的空字段提供一些默认值,请在模型中使用 default 属性。您还可以覆盖表单的 save 方法。

为了使字段成为必填项,

class ExtraValueFormRight(forms.ModelForm):
    label = forms.CharField(required=True,
                    widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Sub Title'}))
    somevalue = forms.CharField(required=True,
                        widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Some Value'}))

class Meta:
    model = OrderHeader
    fields = ('label', 'somevalue')

【讨论】:

  • 我想检查表单集是否为空。如果为空,则不要在数据库中创建新记录。我该怎么做?
  • 在您的表单字段中,设置 required=True。它不允许您提交空表单。
猜你喜欢
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 2017-08-17
  • 1970-01-01
  • 2018-07-10
  • 1970-01-01
相关资源
最近更新 更多