Django:如何将初始值设置为formset的empty_form?

时间:2015-01-28 19:50:29

标签: django django-admin

我只想知道如何将初始值设置为empty_form

我确实创建了带有额外表单初始值的Inlines而没有问题,但是,当用户点击添加按钮时,我希望它的字段初始值显示为空,我希望它具有与额外形式相同的初始值。

如何使empty_form填充初始数据?

提前致谢。

2 个答案:

答案 0 :(得分:2)

Django并没有真正提供为空表单设置初始值的方法。我找到了几种解决方法:

  1. 在javascript中动态设置字段值。
  2. 覆盖formset的empty_form属性。
  3. 示例:

    formset = formset_factory(MyClass, **kwargs)
    empty = formset.empty_form    
    # empty is a form instance, so you can do whatever you want to it
    my_empty_form_init(empty_form)
    formset.empty_form = empty_form
    

答案 1 :(得分:0)

我遇到了类似的问题,最终对我有用的是使用Django Dynamic Formset。 DDF所做的不是使用空表单来创建新的表单集,而是使用其中一个extra_forms作为模板。默认行为是在将HTML插入DOM之前清除extra_form中的所有字段值,但您可以使用keepFieldValues设置指定要保留的字段。

在我的情况下,我想保留所有隐藏的字段值:

$(function() {
    $('#myForm_table tbody tr').formset({
        keepFieldValues: 'input:hidden',
        }
    });
});

当然,如果您愿意,可以绕过Django Dynamic Formsets并使用Javascript实现自己的添加/删除代码。