Python 如何在django中使用MySQL视图?

Python 如何在django中使用MySQL视图?,python,mysql,django,view,Python,Mysql,Django,View,我想使用我在MySQL中创建的视图作为Django中的模型。我想在我的内部网站上显示公司正在进行的未完成流程的状态。我在论坛上只找到了一些比较老的条目,所以有没有一种简单的方法可以通过syncdb传递MySQL视图 如果没有,则假设我有两个表: 子流程的硬写里程碑,例如: 将进程和子进程信息作为上表ID的表: 我在MySQL中的观点就是这样的。 4) 因此,结果将是: 我想在我的django应用程序中只有一个模型,结果4。 最快的方法是什么?自定义SQL查询?或者我需要为progress\u

我想使用我在MySQL中创建的视图作为Django中的模型。我想在我的内部网站上显示公司正在进行的未完成流程的状态。我在论坛上只找到了一些比较老的条目,所以有没有一种简单的方法可以通过
syncdb
传递MySQL视图

如果没有,则假设我有两个表:

  • 子流程的硬写里程碑,例如:
  • 将进程和子进程信息作为上表ID的表:

  • 我在MySQL中的观点就是这样的。 4) 因此,结果将是:

  • 我想在我的django应用程序中只有一个模型,结果4。
    最快的方法是什么?自定义SQL查询?或者我需要为
    progress\u tb
    proc\u tb
    建立模型并将它们结合起来吗?我如何多次引用同一个表(在Access/MySQL中,我有
    progress\u tb
    as
    progress\u tb\u 1
    et c.)?到现在为止,我只知道如何进行过滤查询,但如何从联接表中“添加”几列呢?我尝试了django的“extra”选项,但我不明白它是如何工作的:(

    您可以通过嵌套的
    Meta
    类上的
    managed=False
    字段声明将视图指定为不受django管理:

    class MyViewModel(models.Model):
        field1 = models.IntegerField()
        [...]
    
        class Meta:
            managed = False
            db_table = 'MyView' # your view name
    

    managed=False
    将导致
    python manage.py syncdb
    忽略该模型以进行同步。

    谢谢,我明天会尝试一下!即使syncdb无法识别该视图,它也能工作吗?我只需按照视图中的字段名称命名即可。是的。在没有
    syncdb
    操作的情况下,它仍然能工作。这就是
    managed
    字段的设计目的。您不必完全按照视图中的方式命名字段,但是如果字段具有良好的、可理解的名称,那么您可能应该这样做。如果您想将视图的字段名与Django模型的字段名分开,您可以指定字段的模型实例化。例如。g、
    field1=models.IntegerField(db_column='super_crapy_field_name')
    那么我的MyViewModel如何知道“field1”实际上是“sub_Proc1%”,而“field2”是“sub_Proc2_2%”(来自给定示例)?因为我抓到了。好的,
    sub\u Proc1
    可以重命名,但不必重命名。如果不想重命名它,只需执行
    sub\u Proc1=models.IntegerField()
    (或任何正确的模型类型)。如果要重命名它,请使用field
    db\u column
    -
    sub\u Proc1\u重命名=models.IntegerField()(db_column='sub_Proc1')
    。谢谢你的建议——我会研究一下:)谢谢你的其余建议,它很管用!