0

我的“添加”视图中有以下表单集。用户可以动态添加表单并且添加/保存它们可以完美地工作。现在的问题是我想不出一个好方法来预填充这个表单集以进行编辑。在编辑下,用户应该能够在表单集中添加和删除表单。

看法

ClassificationFormset = formset_factory(ClassificationForm)
classification_formset = ClassificationFormset(prefix='habitat_fs')

自定义表格

class ClassificationForm(forms.Form):

classification = ClassificationField(
    label=_('Habitat Classification'),
    required=False,
    queryset=Classification.objects.all(),
)

community = CommunityField(
    label=_('Community'),
    required=False,
    queryset=Community.objects.none(),
)

def save(self, habitat_id, *args, **kwargs):
    data = self.cleaned_data
    if data:
        habitat_community = Habitat_Community()
        habitat_community.habitat = habitat_id
        habitat_community.community = data['community']
        habitat_community.save()

到目前为止,我已经尝试覆盖init并在那里填充字段......

def __init__(self, *args, **kwargs):
    habitat = kwargs.pop('habitat', None)
    super(ClassificationForm, self).__init__(*args, **kwargs)
    # Populate fields here based on habitat

...但是 formset_factory 不允许我将任何参数传递给我的表单。

ClassificationFormset = formset_factory(ClassificationForm(habitat=habitat_id))
4

1 回答 1

0

您可以像普通表格一样为每个表格设置初始值。

def some_method(request):
    ClassificationFormset = formset_factory(ClassificationForm)
    classification_formset = ClassificationFormset(prefix='habitat_fs')
    for form in classification_formset:
        form.initial = {"habitat": "some value"}

为清晰起见进行了编辑。

于 2013-05-29T15:19:33.500 回答