0

私のDjangoアプリには、次のpage.htmlような複数のモデルのフォームが含まれています。

# models.py
class OneModel(models.Model):
    foo = models.CharField(...)
    bar = models.CharField(...)

# forms.py
class OneForm(forms.ModelForm):
    class Meta:
        model = OneModel

保存時に、POSTデータに加えて、すべてのフォームにプレフィックスを追加します。次に例を示します。

form1 = OneForm(prefix=OneForm.Meta.model._meta.module_name)

次に、POST保存するリクエストを送信し、次のデータを__init__フォームに送信します。

# views.py
form_data = {'foo': 'fo-fo-fo',    # from request.POST
             'bar': 'bar-bar-bar'} # -//-//-
form1 = OneForm(form_data)         # without prefix

その後、テンプレートを作成するときに、データ(fo-fo-fobar-bar-bar)を使用してフォームから入力を取得しますが、入力名にプレフィックスが含まれていません。これは、私が望むものではありません。

__init__しかし、代わりにパーツにプレフィックスを追加すると、データなしでフォームが返されます。

# views.py
form1 = OpenForm(prefix=OneForm.Meta.model._meta.module_name, form_data)

必要なデータと追加したプレフィックスの両方を含むフォームの結果を取得するにはどうすればよいですか?

4

1 に答える 1

1

form_dataから作成する必要はありませんrequest.POST。フォームインスタンスはとして作成できますform1 = OneForm(request.POST, prefix=OneForm.Meta.model._meta.module_name)

于 2012-09-13T17:03:33.953 に答える