为现有的数据库/ sql视图创建django模型?

时间:2010-02-11 16:37:55

标签: django django-models sql-view

我在$ template_dir / sql / $ someTableName.sql文件中插入了一个视图的定义。 (创建或替换视图)所以每次运行syncdb时,都会创建数据库视图。

我可以在models.py中创建一个访问该视图的python类吗?

更好的做法是改用python的原始sql功能吗?

--- --- EDIT

我遇到的另一个问题是视图没有主键,但django似乎假设会有一个因为我收到错误caught an exception while rendering: (1054, "Unknown column 'appName_currentleagues.id' in 'field list'")但是我没有定义这样的成员:

Class CurrentLeagues(models.Model):
        League = models.ForeignKey(League)
        class Meta:
                managed = False

所以我的猜测是django合理地看到我没有在CurrentLeagues类中定义主键,因此Django假设有一个名为id的键。有没有办法告诉Django没有主键(因为这实际上是一个视图),或者甚至不是我的问题?

2 个答案:

答案 0 :(得分:5)

请参阅Unmanaged models

您可以照常定义模型,并将managed = False添加到元选项中:

class MyModel(models.Model):
    ...
    class Meta:
         managed = False

答案 1 :(得分:3)

尝试使用python manage.py inspectdb或python manage.py inspectdb> models.py