2011-10-20 13 views
1

私はこのようなDjangoのモデルがあります:2つの形式

class Something(models.Model): 
    attr1 = models.IntegerField() 
    attr2 = models.IntegerField() 
    attr3 = models.IntegerField() 

を私は何かを作成するフォームを作りたいオブジェクトが、私はWizardFormを使用して、それをしたいので、私は分割このような二つの形式に変換する「ビッグフォーム」:

class Form1(forms.ModelForm): 
    class Meta: 
     model = Something 
     exclude = ('atrr3',) 


class Form2(forms.ModelForm): 
    class Meta: 
     model = Something 
     fields = ('atrr3',) 

だから、両方が一緒に完全なモデルの形を作ります。 ここで私の質問に行く:は、それらを一緒に保存し、単一を作成する方法です何かのオブジェクトそれらのうち?

答えて

1

多くのグーグルで私の質問に答えが見つかりました。

data = {} 
# being list_form a iterable list of forms 
for form in list_form: 
    data.update(form.cleaned_data) 
Something.objects.create(**data) 
:あなたは複数のフォームを持っていて、モデルのオブジェクトを作成するためにそれらを結合する必要がある場合、あなたはこのような何かを行うことができます

:私は同じ問題を持っている人のためにそれを投稿します

私はシンプルでとても良い解決策だと思います。

+0

私は同じ要求を持っているので、もっと助けてくれますか? – MysticCodes

+0

これは面白いです。以前のフォーム情報を保存するために各フォームに隠しフィールドを作成することを考えていましたが、これはずっと簡単です! –

0

実際にDjango's Form Wizardを試しましたか?ドキュメントの状態として

ユーザーがすべてのフォームを提出しており、すべてのデータが が検証されたら、ウィザードがデータを処理 - は、電子メールを送信し、それをデータベースに保存します、またはアプリケーションが何をする必要があるのか​​を示します。

usage instructionshttp://django-formwizard.readthedocs.org/en/latest/index.html

は本当に簡単です:それはおそらく1.4に含まれる書き換えウィザードを使用することは理にかなっていますが

+0

いいえ、私の質問に答えなかった、私は既にFormWizardを使用しています。 – juliomalegria

+0

それから私はあなたの問題を理解していません。あなたは何をしたいのですか?これは、データエントリを別々のステップに分割し、各ステップ/フォームを検証し、最後にそのデータをdbに保存します。だから両者を一緒に保存するのですか? – arie

関連する問題