「追加」ビューに次のフォームセットがあります。ユーザーはフォームを動的に追加でき、それらの追加/保存は完全に機能します。ここでの問題は、このフォームセットを編集用に事前設定する良い方法を見つけられないことです。編集中のユーザーは、フォームセットからフォームを追加および削除できる必要があります。
意見
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))