2011-04-17 10 views
3

フォームは、名、電子メール、パスワード、およびグレードを収集します。djangoワンフォーム複数表

この情報をこのような方法で2つのテーブルに保存できますか?

def save(self): 
    new_user = User.objects.create_user(first=self.cleaned_data['first'], email=self.cleaned_data['email'], password=self.cleaned_data['password']) 
    new_grade = Grade.objects.create_grade(grade=self.cleaned_data['grade']) 
    return new_user, new_grade 

これは可能ですか?これを行う良い方法は何でしょうか?

答えて

4

このようなことは絶対不可能ではありません。 ModelFormsと同じように、フォームはモデルに似る必要はありません。フォームは、単に特定のユースケースに必要な入力を記述する方法です。あなたがそのデータを使って行うことは、あなた次第です。これには、さまざまなモデルにまたがって保存することも含まれます。

作成した新しいインスタンスを通常のフォームに戻す必要はありません。それはただの大会です。保存後に新しいインスタンスにアクセスする必要がある場合は、必ずそれらを戻してください。

0

それは次のようにコーディングすると良いでしょう:私は完全にあなたに従ってください...あなたは手の込んだしてください可能性がわからないんだけど

if new_user: 
    ## create other tables.. 
+0

? – Eva611

+1

これを行う方法は間違いありませんが、 'new'user'インスタンスを' if'ステートメントに入れて、ユーザーが作成されたことを確認してから、あなたのモデルに関連付けられた他のインスタンスを作成するような、私のようにコーディングする必要はありませんが、 'grade'が' user'に関連付けられている場合は、 'user'を最初に作成してからgrade ..を作成する必要があります。 –

関連する問題