所以我有一個問題,我正在考慮創建一個表,其中有一個外鍵到其他幾個表,並使用另一個字段「類型」來說什麼表該鍵應該屬於。Django對許多表模型一個外鍵
class Status(Models.model):
request = models.ForeignKey("Request1", "Request2", "Request3")
request_type = models.IntegerField()
...Some status related data
class Request1(Models.model):
...Some data
class Request2(Models.model):
...Some other data
Class Request3(Models.model):
...different data
我的問題是,是否可以定義這樣的外鍵? 另一種解決辦法我認爲是這樣定義
class Status(Models.model):
request1 = models.ForeignKey("Request1")
request2 = models.ForeignKey("Request2")
request3 = models.ForeignKey("Request3")
...Some status related data
class Request1(Models.model):
...Some data
class Request2(Models.model):
...Some other data
Class Request3(Models.model):
...different data
我的模型,但如果我這樣做,這樣,纔有可能定義通過Django的約束,說只有1外鍵允許有數據和其他兩個必須爲空?或者我將不得不在數據庫端嚴格設置這個約束(我使用的是postgres)我希望能夠告訴django在創建數據庫的時候這樣做,所以我不必每次都記得有人重新創建數據庫。
任何意見或建議將不勝感激。我沒有結過這兩種想法,所以如果有另一種巧妙的方法來達到同樣的效果,我很樂意聽到它。感謝您的時間。
編輯:我使用Django 1.7.10
你只想三個之一是FK? –
對不起,每個狀態只能鏈接到一個請求。 – mingle