2011-01-10 7 views
1

私は以下の作業をしています。 Project、User、PurchaseOrderという3つのモデルがあります。私は、プロジェクトのユーザーのメンバーシップを作成したいと考えています。ユーザーは、任意のプロジェクトのメンバーになることができます。これは ManyToManyFieldで解決できます。余分なフィールドと多対多の関係 - 一意性を回避する方法

さらに、特定のPurchaseOrdersに勤務時間を割り当てたいので、メンバーシップはPurchaseOrderを参照する必要があります。

これはManyToManyFieldにthrough-tableを使用し、PurchaseOrderモデルにForeignKeyを定義することで解決できると思います。したがって、私はPurchaseOrderへの参照をメンバーシップごとに持っています。

実際には、プロジェクトのメンバーシップは有効なままですが、PurchaseOrderのためにお金が費やされた後、新しいPurchaseOrderをメンバーシップに割り当てる必要があります。これは、ForeignKeyを新しいPurchaseOrderに更新するだけでも簡単にできます。

しかし、今は私の質問:私は(履歴追跡のためのメンバーシップ・テーブル内のデータ行、)古いプロジェクト・メンバーシップ・発注書-関係を維持したい

は、無効に設定して、新しいプロジェクトのメンバーシップを追加します-PurchaseOrder-Relationは、UserおよびProjectと同じForeignKeyを持ちますが、PurchaseOrderとは異なり、有効に設定されたフラグです。

これは有効なアプローチですか、これは一意性を回避する(またはManyToManyFieldの定義で一意性がない)か、これを行う方法がわかりますか?

+0

メンバーシップオブジェクトを「ユニーク」にしたいと思っているのですか? –

+0

私はメンバーシップオブジェクトがユニークであることを望んでいません、彼らはユニークかもしれないと思った。しかし、私はちょうどチェックし、彼らはそうではありません。どっちがいい。私はおそらく質問をする前にチェックしておいたはずです。 –

答えて

1

これを読んだとき、なぜMember> PurchaseOrderの多対多の関係に気を付けるのか分かりません。

メンバシップがすべてのプライマリキーであるように見えるため、Member> PurchaseOrderと多対多のリレーションメンバー>プロジェクトに対して、これを1対多の関係にします。

このようにして、キーを更新する必要はありません。次に、購入を追跡して多対多の関係を持つ第4のモデルを作成します。メンバシッププリムの追加キーとPurchaseOrder prim.key。

+0

メンバーについて話しているのなら、User! –

+0

あなたは正しいです。それは正しい方向へ私を指摘した。ありがとう。 –

関連する問題