Formset(表单集)是多个表单的集合。Formset在Web开发中应用很普遍,它可以让用户在同一个页面上提交多张表单,一键添加多个数据,比如一个页面上添加多个用户信息。 一、Formset的分类 Django针对不同的formset提供了三种方法:formset_factory、modelformset_factory和inlineformset_factory。 二、如何使用formset_factory 对于继承forms.Form的自定义表单,我们可以使用formset_factory。 python','pub_date':'北京出版社'}] return render(request, 'manage_books.html', {'formset': formset}) 注意 :如果使用了 initial 来显示formset,那么您需要在处理formset提交时传入相同的 initial ,以便formset检测用户更改了哪些表单。
= AddFormSet(request.POST) if add_formset.is_valid(): print('>>>', add_formset.cleaned_data update_name_set = route_permission_name_set & db_permission_name_set update_formset = FormSet update_formset = FormSet(request.POST) if update_formset.is_valid(): update_formset.save () update_formset = FormSet(queryset=models.Permission.objects.filter(name__in=update_name_set ': del_formset, 'update_formset': update_formset, 'add_formset
在新的内联模型类中,重写 get_formset() 方法。这个方法负责返回一个表单集,表单集中的每个表单对应于内联模型中的一个对象。 在 get_formset() 方法中,使用 formset_factory() 函数创建表单集。 在 formset_factory() 函数中,指定 model 参数为内联模型的模型类,并指定 fields 参数为内联模型中需要显示的字段。 () 函数创建表单集 def get_formset(self, request, obj=None, **kwargs): formset_class = super().get_formset (request, obj, **kwargs) formset_class = formset_factory(InvoiceProductFormset, extra=0,
glyphicon-remove" > 绑定银行卡 <span class="<em>formset</em>-num var cards = $('#cards').find(".panel"); for (var i = 0; i < cards.length; i++ ){ // formset-num 重新赋值 cards.find('.formset-num').eq(i).html(i+1); } }); //删除 $("#cards").on("click", ".glyphicon-remove cards = $('#cards').find(".panel"); for (var i = 0; i < cards.length; i++ ){ // formset-num 重新赋值 cards.find('.formset-num').eq(i).html(i+1); } } }); </script>
{% endblock %} {% endblock %}
{% if cl.formset.total_error_count == 1 %}{% trans {% date_hierarchy cl %}{% endblock %} <form id="changelist-form" method="post"{% if cl.formset.is_multipart enctype="multipart/form-data"{% endif %} novalidate>{% csrf_token %} {% if cl.formset %}
StateOptionOutcome fields = ['relevantoutcome', 'outcomevalue']StateOptionOutcomeFormSet = forms.formset_factory views.pystateoption = get_object_or_404(StateOption, pk=stateoption_id)if request.method == "POST": formset = StateOptionOutcomeFormSet(request.POST) if formset.is_valid(): for form in formset:
glyphicon-remove" > 绑定银行卡 <span class="<em>formset</em>-num var cards = $('#cards').find(".panel"); for (var i = 0; i < cards.length; i++ ){ // formset-num 重新赋值 cards.find('.formset-num').eq(i).html(i+1); } // 添加3行 $('.selectpicker').data
调用save()之后,您的模型formset将有三个包含formset更改的新属性: models.BaseModelFormSet。 =1) >>> formset = ArticleFormSet() >>> for form in formset: ... formset,导致一个有效的形式。 , 'book_formset': book_formset, }) 你可以以正常的方式渲染模板。 ModelAdmin.save_formset(request, form, formset, change)[source] ModelForm方法是给予HttpRequest,父save_formset
methodParams="java.lang.Object, org.apache.commons.validator.Field"/> </global> <formset > </formset> </form-validation> 添加姓名验证. methodParams="java.lang.Object, org.apache.commons.validator.Field"/> </global> <formset <arg0 key="nameForm.lastname.displayname"/> </field> </form> </formset
post" id="form" action="" class="usertabs accfrm"><input type="submit" value="Delete" /> {{formset.management_form
-- Using the formset --> {{ form.as_p }} <input type="submit" value="Submit"> </form>
├── editbox → myeditbox (扩展编辑框) ├── form → myform (增强表单) ├── formset