Django 1.8的inspectdb命令根据文档没有看到PostgreSQL视图

时间:2015-05-27 21:38:40

标签: python django postgresql views

我有一个带有PostgreSQL数据库的Django 1.8应用程序。我从命令行运行django inspectdb来检查视图的模型,但视图不会显示在模型输出中。

这是版本输出:

17:36 $ python well/manage.py --version
1.8.2

这就是psql看到的:

\dv
                List of relations
 Schema |             Name              | Type |  Owner  
--------+-------------------------------+------+---------
 public | hospitalizations_over_30_days | view | dwatson
 public | interval_30_days              | view | dwatson
(2 rows)

来自django 1.8.2文档:

New in Django 1.8:
A feature to inspect database views was added. In previous versions, only tables (not views) were inspected.

如何让PostgreSQL视图出现在Django 1.8.2 inspectdb输出中?

2 个答案:

答案 0 :(得分:1)

从Django 1.10开始,您只需将单个视图命名为inspectdb命令的参数:

$ python well/manage.py inspectdb hospitalizations_over_30_days

默认inspectdb仅输出表格的models.py,但视图模型可以通过命名来单独生成。

如果您希望inspectdb默认为所有表视图生成模型,则必须编辑Django的源代码。在Django 2.0中,将line 57 in django/core/management/commands/inspectdb.py更改为:

tables_to_introspect = options['table'] or connection.introspection.table_names(cursor=cursor, include_views=True)

另外,请注意模型没有设置primary_key=True的字段,您需要手动添加主键。

答案 1 :(得分:0)

在最新版本中,可以通过以下方式将其传递给命令来包含视图(将检查表和视图):

python manage.py inspectdb --include-views > my_models.py