同じタイプの複数のフィールドを持つ編集可能なフォームセットを作成しました。
データは編集して送信できます。
更新が自動的に行われるように、このフォームセットをデータにバインドする方法はありますか? また
編集可能なすべてのフィールドを繰り返し処理し、個別に更新する必要がありますか?
私はあなたが求めている100%ではありませんが、あなたのデータはモデルから来ていますか? その場合、モデルフォームセットを使用してフォームセットを ModelForms に関連付けることができます。
https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#model-formsets
したがって、モデルがある場合:
class Product(models.Model):
field_1 = models.CharField(...)
field_2 ...
...
およびモデル フォーム:
class ProductForm(forms.ModelForm):
field_1 = models.TextField(max_length=100)
field_2 ...
...
class Meta:
model = Product
そのモデルからフォームセットを作成できます。これに沿った何か:
あなたのviews.pyで
ProductFormSet = modelformset_factory(ProductForm)
if request.method=="POST":
formset = ProductFormSet(request.POST)
if formset.is_valid():
formset.save()
...
else:
formset = ProductFormSet()
...
return direct_to_template(request,
template = "foo.html",
extra_context = { 'formset' : formset })
フォームセットが POST されて検証されると、モデルが自動的に更新されるため、これは便利です。また、フォームセットで特定のインスタンスがいつ編集されたかを認識するため、さらにロジックを実行できます。