所以我有一个问题,我正在考虑创建一个表,其中有一个外键到其他几个表,并使用另一个字段“类型”来说什么表该键应该属于。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