2011-05-28 10 views
2

私は、誰かがnetwork,location、およびadministratorsというネットワークを入力するフォームを作成しています。私はサイト管理者がネットワークに管理者を追加するとき、それはすぐにAdministratorクラスでそのエントリを作成し、その後にそれにリンクアップするようなフォームを作成することができますどのように親テーブルへのモデルオブジェクトの追加

class Administrator(models.Model): 
    email = models.EmailField() 
    name = models.CharField(max_length=100, blank=True) 

class Network(models.Model): 
    name = models.CharField(max_length=50) 
    location = models.CharField(max_length=50) 
    administrators = models.ManyToManyField(Administrator, blank=True) 

- これが私のモデルであり、 administrators列?フォームオブジェクトはform.save(commit=False)を使用するカスタム処理のために

答えて

1

このsave()メソッドは、オプションの が TrueまたはFalseのどちらかを受け入れキーワード引数を、コミット受け入れます。 save()をcommit = Falseと呼び出すと、 がまだデータベースに保存されていないオブジェクトを返します。 この場合、 結果のモデルインスタンス でsave()を呼び出すのはあなた次第です。これは です。 をオブジェクトに対して処理する場合は、 を保存するか、 の特殊モデル保存オプションのいずれかを使用する場合に便利です。

から:https://docs.djangoproject.com/en/1.0/topics/forms/modelforms/#the-save-method


ですから、NetworkFormを持っている場合は、commit=Falseを使用することができ、その後、彼は作成する必要がある場合は、管理者が既に存在するかどうかをチェック。 get_or_createは本当に便利です。

フォームにadministratorを新しく作成または取得した管理者インスタンスに設定し、フォームを保存することができます(form.save()およびform.save_m2m()を使用)。