Erstellen von Django -Modell für die vorhandene Datenbank/SQL -Ansicht?
-
20-09-2019 - |
Frage
Ich habe eine Definition für eine Ansicht in $ template_dir/sql/$ irgendwannsame.sql -Datei eingefügt. (Ansicht erstellen oder ersetzen) also jedes Mal, wenn ich laufe syncdb
, Die DB -Ansichten werden erstellt.
Kann ich in Models erstellen. Py eine Python -Klasse, die auf diese Ansicht zugreift?
Ist es besser Praxis, stattdessen nur Pythons rohe SQL -Funktionalität zu verwenden?
---BEARBEITEN---
Ein weiteres Problem, das ich habe, ist, dass die Ansicht keinen Primärschlüssel hat, aber Django scheint davon auszugehen, dass es einen geben wird, weil ich einen Fehler bekomme caught an exception while rendering: (1054, "Unknown column 'appName_currentleagues.id' in 'field list'")
Aber ich habe kein solches Mitglied definiert:
Class CurrentLeagues(models.Model):
League = models.ForeignKey(League)
class Meta:
managed = False
Ich vermute also, dass Django vernünftigerweise sieht, dass ich keinen Primärschlüssel in der Currentleagues -Klasse definiere, also geht Django davon aus id
. Gibt es eine Möglichkeit, Django zu sagen, dass es keinen Primärschlüssel gibt (da dies tatsächlich eine Ansicht ist), oder ist das nicht einmal mein Problem?
Lösung
Sehen Nicht verwaltete Modelle
Sie definieren das Modell wie gewohnt und fügen hinzu managed = False
zu den Meta -Optionen:
class MyModel(models.Model):
...
class Meta:
managed = False
Andere Tipps
Versuchen Sie, Python verwalten zu verwenden.