2011-01-10 41 views
1

我有以下任務。 有三個模型Project,User和PurchaseOrder。我希望能夠爲項目中的用戶創建成員資格。用戶可以成爲任意項目的成員。這可以通過一個 ManyToManyField來解決。帶多餘字段的多對多關係 - 如何規避唯一性

此外,成員資格應該引用PurchaseOrder,因爲我想將工作時間分配給特定的PurchaseOrders。

我認爲這可以通過爲ManyToManyField使用through-table並將PurchaseKey定義爲PurchaseOrder模型來解決。因此,我會爲每個會員提供一個PurchaseOrder的參考。

實際上,項目的會員資格將保持活躍狀態​​,而在爲PurchaseOrder支付資金後,必須將新的PurchaseOrder分配給成員資格。只需將ForeignKey更新爲新的PurchaseOrder,這也很容易。

但現在我的問題:

我想保留舊的項目,會員制的PurchaseOrder - 關係(數據行中的成員關係表,對歷史跟蹤),將其設置爲禁用,並添加一個新的項目成員資格-PurchaseOrder-Relation,它具有與用戶和項目相同的ForeignKey,但與PurchaseOrder不同,並且標誌設置爲啓用。

這是一個有效的方法,這項工作,是否有可能規避唯一性(或根據定義,ManyToManyField沒有唯一性),還是你有更好的想法如何做到這一點?

+0

如果您希望會員資格對象是「獨一無二的」,我真的不明白這一點嗎? – 2011-01-10 22:04:21

+0

我不希望會員資格對象是唯一的,我認爲它們可能是獨一無二的。但我只查了一下,他們沒有。這很好。我可能應該在我問這個問題之前進行檢查。 – 2011-01-11 08:43:39

回答

1

當我通讀這篇文章時,我無法弄清楚爲什麼即使打擾Member> PurchaseOrder的Many-to-Many關係。

我會使它成爲Member> PurchaseOrder和多對多關係成員>項目的一對多關係,因爲成員似乎是所有關鍵成員的主鍵。

這樣,您不必更新任何密鑰。然後,我將創建第四個模型,其中包含多對多關係以跟蹤購買情況。添加成員資格。鍵和PurchaseOrder prim.key。