Więc mam pytanie, które myślałem o stworzeniu pojedynczej tabeli, która ma klucz obcy dla kilku innych tabel, i używając innego pola "typ", aby powiedzieć, do której tabeli klucz powinien należeć .Django modeluje jeden klucz obcy dla wielu tabel
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
Moje pytanie brzmi, czy można zdefiniować taki klucz obcy? Innym rozwiązaniem myślałem było określenie mojego modelu jak ten
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
Ale jeśli to zrobię to w ten sposób możliwe jest zdefiniowanie ograniczenie poprzez Django, który mówi tylko 1 klucz obcy może mieć dane, a drugi dwie muszą być zerowe? lub będę musiał ściśle ustawić to ograniczenie na stronie db. (Używam postgres) Chciałbym móc powiedzieć django, aby to zrobić, gdy tworzy db, więc nie muszę pamiętać za każdym razem, gdy ktoś odtwarza bazę danych.
Wszelkie uwagi i rady są mile widziane. Nie jestem żonaty z żadnym z tych pomysłów, więc jeśli istnieje inny sprytny sposób osiągnięcia tego samego efektu, to jestem gotów to usłyszeć. Dziękuję za Twój czas.
Edycja: używam Django 1.7.10
Chcesz po prostu jednym z trzech jest FK? –
Przepraszam, tak, każdy status powinien zawierać tylko jedno żądanie. – mingle