为现有的数据库/ sql视图创建django模型?
我在$ template_dir/sql/$ someTableName.sql文件中插入了一个视图的定义。 (创建或替换视图),所以每次运行syncdb
时,都会创建数据库视图。为现有的数据库/ sql视图创建django模型?
我可以在models.py中创建一个访问该视图的python类吗?
更好的做法是使用python的原始sql功能代替吗?
---编辑---
我还有一个问题是,认为没有一个主键,但Django的似乎要假定会有一个,因为我得到一个错误caught an exception while rendering: (1054, "Unknown column 'appName_currentleagues.id' in 'field list'")
但我不“T这样的成员定义:
Class CurrentLeagues(models.Model):
League = models.ForeignKey(League)
class Meta:
managed = False
所以我的猜测是,Django的合理看到,我没有定义在CurrentLeagues类主键,所以Django的假定有一个叫id
。有没有办法告诉Django没有主键(因为这实际上是一个视图),或者甚至不是我的问题?
您定义模型像往常一样,并添加managed = False
到Meta选项:
class MyModel(models.Model):
...
class Meta:
managed = False
尝试使用Python manage.py inspectdb或Python manage.py inspectdb> models.py
欢迎使用堆栈 – qdot 2012-10-05 23:00:19
但是,如何将python类与我希望它关联的mysql视图相关联?我是否需要正确地键入“MyModel”的成员来正确匹配视图中字段的拼写,并且它会自动以某种方式自动工作? – 2010-02-13 23:39:54
我只需要将视图拼写为'appName_classname',因为这是django自动为每个python Model实例使用的拼写。 – 2010-02-13 23:51:53
您可以使用'db_table'元选项手动传递视图的名称:http://docs.djangoproject.com/en/dev/ref/models/options/#db-table。是的,你需要输入字段名称,否则django将不会有你的模型的Python版本。如果你想减少键入的数量,你可以使用一个错综复杂的抽象模型和继承网络,但是我会尽可能地简单,即使它意味着一点点重复。 – 2010-02-14 01:46:19