根据文档,Django 1.8 inspectdb 命令看不到 PostgreSQL 视图
Django 1.8 inspectdb command doesn't see PostgreSQL views as per documentation
我有一个带有 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 输出中?
从 Django 1.10 开始,您可以简单地将单个视图命名为 inspectdb
命令的参数:
python well/manage.py inspectdb hospitalizations_over_30_days
默认inspectdb
只会输出表models.py,但是视图的模型可以通过命名单独生成。
在Django 2.1及以上版本中,如果你想inspectdb
为所有表和视图生成模型,use the inspectdb --include-views
option, which I contributed to Django 2.1作为这个问题的结果!
python well/manage.py inspectdb --include-views
要在 Django 2.0 及更低版本中为表和视图生成模型,您必须编辑 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
的字段,您需要手动添加主键。
在最近的版本中,有一个选项可以通过将视图传递给命令来包含视图,如下所示(将检查表和视图):
python manage.py inspectdb --include-views > my_models.py
我有一个带有 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 输出中?
从 Django 1.10 开始,您可以简单地将单个视图命名为 inspectdb
命令的参数:
python well/manage.py inspectdb hospitalizations_over_30_days
默认inspectdb
只会输出表models.py,但是视图的模型可以通过命名单独生成。
在Django 2.1及以上版本中,如果你想inspectdb
为所有表和视图生成模型,use the inspectdb --include-views
option, which I contributed to Django 2.1作为这个问题的结果!
python well/manage.py inspectdb --include-views
要在 Django 2.0 及更低版本中为表和视图生成模型,您必须编辑 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
的字段,您需要手动添加主键。
在最近的版本中,有一个选项可以通过将视图传递给命令来包含视图,如下所示(将检查表和视图):
python manage.py inspectdb --include-views > my_models.py