【发布时间】:2016-02-05 07:35:08
【问题描述】:
所以我有一个问题,我正在考虑创建一个表,该表具有指向其他几个表的外键,并使用另一个字段“类型”来说明该键应该属于哪个表。
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 吗?
-
抱歉,每个状态只能链接到一个请求。
标签: python django postgresql django-models