So, I had a question that I wanted to create a single table with a foreign key for several other tables and use a different type field to indicate in which table the key should belong.
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
My question is, is it possible to define such a foreign key? another solution i was thinking about is to define my model like this
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
But if I do it this way, can I define a constraint through django, which says that only one foreign key is allowed to have data, and the other two should be empty? or I will have to strictly set this restriction on the db side (I use postgres). I would like to tell django to do this when it creates db, so I don't need to remember every time someone recreates db.
Any input or advice is appreciated. I am not married to any of these ideas, so if there is another smart way to achieve the same effect, I should hear it. Thank you for your time.
Edit: I am using django 1.7.10
source share