Ich habe eine externe Datenbank, die ich in keiner Weise ändern kann (schreibgeschützt). Es hat drei Tabellen - Company
(id
), CompanyContact
(company_id
, contact_id
), Contact
(id
, company_id
).Django Union zwei Tabellen in einzelnes Modell
Grundsätzlich hat Contact
einen Nullable-Fremdschlüssel zu Company
Tisch und es funktioniert so viele-zu-eins, aber wenn company_id null
ist, ich habe in CompanyContact
Tabelle suchen, die many-to-many Art Beziehung. Wie kann ich diese zwei Tabellen (Contact
und CompanyContact
) in einem Modell kombinieren? Contact
? Mit anderen Worten, wie kann ich alle Kontakte für eine bestimmte Firma bekommen?
In SQL, die so etwas wie sein würde:
select contact.id from contact where company_id = XXX union select contact_id from companycontact where company_id = XXX
Django Modelle:
class Company(models.Model):
uuid = models.CharField(max_length=36, primary_key=True, db_column='id')
class Meta:
managed = False
class Contact(models.Model):
uuid = models.CharField(max_length=36, primary_key=True, db_column='id')
company = models.ForeignKey(Company, db_column='company_id')
class Meta:
managed = False
Ich habe nicht ein Modell für CompanyContact
. Und es gibt nichts in Ansichten zu zeigen, weil das im Grunde ist meine Frage, wie man Kontakte für eine bestimmte Firma bekommt.
können Sie die Tabelle/Spalte mischen in Ihrer Frage klären bitte – e4c5
Zeigen Sie uns die models.py und Blick ?? –