0

同じタイプの複数のフィールドを持つ編集可能なフォームセットを作成しました。

データは編集して送信できます。

更新が自動的に行われるように、このフォームセットをデータにバインドする方法はありますか? また

編集可能なすべてのフィールドを繰り返し処理し、個別に更新する必要がありますか?

4

1 に答える 1

1

私はあなたが求めている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 されて検証されると、モデルが自動的に更新されるため、これは便利です。また、フォームセットで特定のインスタンスがいつ編集されたかを認識するため、さらにロジックを実行できます。

于 2011-05-31T18:01:16.873 に答える