2009-11-22 40 views
6

比方說,我有如下定義的類結構:唯一字段值和多對多的關係

Class Item(models.Model): 
    ... 
    price = models.IntegerField() 
    upc = models.IntegerField() 
    ... 

Class Store(models.Model): 
    ... 
    inventory = models.ManyToManyField(Item) 
    ... 

基本上我想保存模型能夠獲得相同的庫存。然而,商品模型中的價格價值對於鏈接到它的每個商店都是唯一的。例如我可能會有一個名爲bike的項目模型實例,所有商店都有權訪問它。對於所有商店,upc(條形碼)將是相同的,但每個商店的價格會有所不同。有沒有什麼方法可以用這個類結構來實現這種關係?

回答

7

使用明確的through表。見the documentation

+0

感謝您的回覆。我認爲這是有道理的,但是你能否解釋一下我如何確定每個商店的每個價格都是唯一的? – buken 2009-11-22 23:32:17

+0

這應該從文檔示例中顯而易見。您實現了一箇中間表/模型,並且對於任何給定的Store/Item組合,您可以獲得其他數據,例如價格(您可能希望從'Item'模型中刪除'price'字段)。 – 2009-11-23 05:42:12

+1

如果您需要確保給定商店的價格的唯一性(坦率地說,這似乎是一個奇怪的要求),那麼您需要在直通模式中使用unique_together Meta選項,以確保('store','price') unique_together。 – 2009-11-23 20:45:33