Django 1.8 inspectdb命令无法看到文档中的PostgreSQL视图

lndjwyie  于 2022-12-18  发布在  PostgreSQL
关注(0)|答案(3)|浏览(98)

我有一个使用PostgreSQL数据库的Django1.8应用程序,我从命令行运行djangoinspectdb来检查模型中的视图,但是视图没有显示在模型输出中。
下面是版本输出:

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的输出中?

0aydgbwb

0aydgbwb1#

从Django 1.10开始,您可以简单地将单个视图命名为inspectdb命令的参数:

python well/manage.py inspectdb hospitalizations_over_30_days

默认的inspectdb将只输出models.py表的www.example.com,但是视图的模型可以通过命名单独生成。
在Django2.1及以上版本中,如果你想让inspectdb为所有表 * 和 * 视图生成模型,use the inspectdb --include-views选项,我contributed to Django 2.1作为这个问题的结果!

python well/manage.py inspectdb --include-views

要在Django 2.0及以下版本中为表和视图生成模型,您必须编辑Django源代码。在Django 2.0中,将django/core/management/commands/inspectdb.py中的第57行修改为:

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


请注意,生成的模型将不包含设置为primary_key=True的字段,您需要手动添加主键。

btxsgosb

btxsgosb2#

在最新版本中,有一个选项可通过将视图传递给命令来包括视图,如下所示(将检查表和视图):

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

fnvucqvd3#

我是一个初学者,不知道它是否增加更多的价值.仍然作为一个扩展的答案.一旦我们建立了settings.py,如果我们有多个模式,只是需要特定的视图.

python manage.py inspectdb --database [alias name for the database connection string in settings.py] --include-views [name of the view]>model.py

可能对初学者有帮助。

相关问题