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

Ale*_*ird 7 django django-models sql-view

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

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

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

- -编辑 - -

我的另一个问题是视图没有主键,但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
Run Code Online (Sandbox Code Playgroud)

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

Wil*_*rdy 5

请参阅非托管模型

您可以像往常一样定义模型并添加managed = False到元选项:

class MyModel(models.Model):
    ...
    class Meta:
         managed = False
Run Code Online (Sandbox Code Playgroud)

  • 但是如何将该python类与我希望它关联的mysql视图相关联?我是否需要正确地键入"MyModel"的成员以匹配视图中字段的拼写,它只是以某种方式自动工作? (2认同)
  • 您可以使用“db_table”元选项手动传递视图的名称:http://docs.djangoproject.com/en/dev/ref/models/options/#db-table。是的,你需要输入字段名称,否则 django 不会有你的模型的 python 版本。如果你想减少输入量,你可以使用复杂的抽象模型和继承网络,但我会让事情尽可能简单,即使这意味着一点重复。 (2认同)