django - 为现有数据库/sql View 创建 django 模型?

标签 django django-models sql-view

我已在 $template_dir/sql/$someTableName.sql 文件中插入 View 的定义。 (创建或替换 View ),因此每次运行 syncdb 时,都会创建数据库 View 。

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

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

---编辑---

我遇到的另一个问题是 View 没有主键,但 django 似乎假设会有一个主键,因为我收到错误在渲染时捕获异常:(1054,“未知列” appName_currentleagues.id' in 'field list'") 但我没有定义这样的成员:

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

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

最佳答案

参见Unmanaged models

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

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

关于django - 为现有数据库/sql View 创建 django 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2245956/

相关文章:

python-3.x - Django forms.ModelForm slugfield db_index=True

django - 如何在Django的model.save()中检测模型的新实例

SQL Server 使用条件在 VIEW 中添加计算列

python - 如何提高 django/python 处理速度

django - 多对多关系查询在 post_save 信号上返回空查询集,但在 django shell 中不返回

django - 使用 Django REST Framework 进行身份验证返回 405

sql - 如何查询另一个表中的上一条记录?

python - 反转 'update_comment',参数为 '(' ',)' not found. 1 pattern(s) tried: [' comment\\/(?P<news_pk>[0-9]+)$']

python - 不要针对子模型类

带有 Union All 的 View 中的 MySQL Case 语句