la création de modèle de base de données pour django / vue sql existante?
-
20-09-2019 - |
Question
Je l'ai inséré une définition pour une vue en template_dir $ / sql / $ fichier someTableName.sql. (Créer ou remplacer vue) de sorte que chaque fois que je lance syncdb
, les vues db sont créées.
Puis-je créer dans models.py une classe python qui accède à ce point de vue?
Est-il préférable d'utiliser des fonctionnalités simplement sql premières de python à la place?
--- EDIT ---
Un autre problème est que je la vue ne dispose pas d'une clé primaire, mais django semble être en supposant qu'il sera un parce que je reçois un caught an exception while rendering: (1054, "Unknown column 'appName_currentleagues.id' in 'field list'")
d'erreur, mais je ne dispose pas d'un tel élément défini:
Class CurrentLeagues(models.Model):
League = models.ForeignKey(League)
class Meta:
managed = False
Alors je suppose que django voit raisonnablement que je ne définit pas une clé primaire dans la classe CurrentLeagues, alors Django suppose qu'il ya un appelé id
. Est-il possible de dire à Django qu'il n'y a pas de clé primaire (puisque c'est en fait une vue), ou est-ce même pas mon problème?
La solution
Vous définissez le modèle comme d'habitude et ajoutez managed = False
aux options meta:
class MyModel(models.Model):
...
class Meta:
managed = False
Autres conseils
Essayez d'utiliser inspectdb python manage.py ou python manage.py inspectdb> models.py