【发布时间】:2020-03-17 17:54:21
【问题描述】:
我在 Django 中使用modelformset_factory 让用户填写未知数量的字段。
我已经填写了必填字段,但是在 HTML 渲染中,Django 没有将 required 添加到 HTML 元素中,在网上查看这似乎是一个常见问题,但我没有看到任何适用于我想要的有效答案我觉得这应该很简单。
如何让 Django 将所需的标签添加到 Formset 的适当 HTML 元素中?
class ItemForm(forms.ModelForm):
class Media:
js = (formset_js_path,)
class Meta:
model = PurchaseOrderItems
fields = ['name', 'vendor', 'quantity', 'price', 'description']
labels = {
'name': 'Item',
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# self.fields['description'] .widget.attrs['required'] = 'required'
self.empty_permitted = False
self.fields['description'] = forms.CharField(
required=False,
label='Description',
)
def clean(self):
"""
:return:
"""
cleaned_data = super().clean()
# print(cleaned_data)
ItemFormSet = modelformset_factory(
PurchaseOrderItems,
form=ItemForm,
extra=0,
min_num=1,
validate_min=True,
can_delete=True,
)
这是为 name 字段呈现的 HTML,没有 required,但在我的模型中它肯定是,所以如果提交此表单,我会因为空值而出现 DB 错误:
<input type="text" name="form-0-name" maxlength="150" class="form-control" id="id_form-0-name">
【问题讨论】:
标签: django python-3.x formset