代码之家  ›  专栏  ›  技术社区  ›  Alexander Bird

是否为现有数据库/SQL视图创建Django模型?

  •  7
  • Alexander Bird  · 技术社区  · 15 年前

    我在$template_dir/sql/$sometablename.sql文件中插入了视图的定义。(创建或替换视图)因此每次运行 syncdb ,将创建数据库视图。

    我可以在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
    

    所以我的猜测是Django合理地认为我没有在当前Leagues类中定义主键,所以Django假设有一个 id .有没有办法告诉Django没有主键(因为这实际上是一个视图),或者这不是我的问题?

    2 回复  |  直到 13 年前
        1
  •  5
  •   Will Hardy    15 年前

    Unmanaged models

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

    class MyModel(models.Model):
        ...
        class Meta:
             managed = False
    
        2
  •  3
  •   Bernardo Rychtenberg    13 年前

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