我有一個樣式表來確定每個產品類型型號:你怎麼解決的MySQL和Django管理外鍵約束
class Style(models.Model):
style = models.AutoField(primary_key=True)
name = models.CharField('Title', max_length=150)
etc..
我需要標識的所有變型產品產品表上述型號:
class Product(models.Model):
product = models.AutoField(primary_key=True)
style = models.ForeignKey(Style, db_column='style')
color = models.CharField(max_length=250, blank=True)
price = models.IntegerField(max_length=10, blank=True)
etc..
然而,客戶希望能夠推薦其他符合上述風格的產品。所以我想添加一些「相關產品」列作爲外鍵。但是MySQL和Django都不允許我添加它們。
所以現在我只是做了他們整場。我在樣式模型中添加了以下幾行:
related_1 = models.IntegerField('Related Product1',blank=True,max_length=10, default=0)
related_2 etc..
例如,polo衫的styleId = 1。
它有4種不同的顏色和3種面料。
共有7款產品適用於1款式。
該產品表將有七行所有與styleid = 1。
賣方將手動選擇都涉及到風格的產品,其中進入related_1,related_2等
我明白Django和MySQL的意見一些潛在的循環邏輯那裏,因爲每個產品都有一個FK到styleId 。所以如果styleId有一個外鍵返回到同一產品,就可能發生衝突。
但事實上,你顯然不希望讓相關產品參考產品瓦特/同樣的styleId ...這可以很容易地通過應用程序而不是數據庫來處理。
我的解決方法允許用戶手動輸入相關產品到形式,但它是真的很酷,如果我能得到的Django拉一個選擇下拉與有效的產品ID的列表。如果可能的話。
是嗎?
P.S.我確實閱讀了related_field上的django文檔,但無法真正跟蹤他們所得到的結果。我嘗試了一些東西,但他們沒有提供太多的示例代碼。
2nd P.S.我根據請求編輯它,並提供更詳細的模型信息。我希望這是更清楚現在...
謝謝。我是Django新手只使用管理,所以我不太熟悉這種語法。讓我拿出我得到的並編輯原始帖子。 – joedevon 2009-08-15 23:49:38