Criando o modelo Django para o banco de dados existente/visualização SQL?
-
20-09-2019 - |
Pergunta
Inseri uma definição para uma visualização no arquivo $ template_dir/sql/$ em someblename.sql. (Crie ou substitua a exibição) Então toda vez que eu corro syncdb
, as visualizações de banco de dados são criadas.
Posso criar em modelos.py uma classe python que acessa essa visualização?
É melhor praticar apenas usar a funcionalidade SQL bruta do Python?
---EDITAR---
Outro problema que tenho é que a visão não tem uma chave primária, mas Django parece estar assumindo que haverá um porque eu recebo um erro caught an exception while rendering: (1054, "Unknown column 'appName_currentleagues.id' in 'field list'")
Mas eu não tenho esse membro definido:
Class CurrentLeagues(models.Model):
League = models.ForeignKey(League)
class Meta:
managed = False
Então, meu palpite é que Django vê razoavelmente que eu não defino uma chave primária na classe CurrentLeagues, então Django assume que há um chamado id
. Existe uma maneira de dizer a Django que não há chave primária (já que isso é realmente uma visão), ou isso nem é meu problema?
Solução
Você define o modelo como de costume e adiciona managed = False
para as opções de meta:
class MyModel(models.Model):
...
class Meta:
managed = False
Outras dicas
Tente usar o python gerencia.py inspetdb ou python gerencia.py inspetdb> models.py