django2中json的inspectdb命令生成django.contrib.postgresql.fields.JSONField而不是django.contrib.postgres.fields.JSONField?

时间:2018-04-09 15:36:42

标签: python json django django-2.0 inspectdb

我切换到django 2,因为它支持使用inspectdb检测json字段,但是当我运行inspectdb时,它会生成django.contrib.postgresql.fields.JSONField,我不知道从哪里导入它。

正如django文档django_inpectdb_doc

中所述

我明白可以通过添加import django.contrib.postgres.fields.JSONField修复它问题是它是自动生成的django.contrib.postgre sql .fields.JSONField(注意粗体文字)。

class AsyncResultsStore(models.Model):
    task_id = models.CharField(max_length=255)
    created = models.DateTimeField(blank=True, null=True)
    status = models.CharField(max_length=255)
    result = django.contrib.postgresql.fields.JSONField(blank=True, null=True)
    info = models.CharField(max_length=255)
    arguments = django.contrib.postgresql.fields.JSONField(blank=True, null=True)
    chip_meas_result = models.ForeignKey(Chipmeasurementresult, models.DO_NOTHING, blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'async_results_store'

我想这样做:

import django.contrib.postgres.fields

但这是不可能的,因为生成的行是:

django.contrib.postgresql.fields

postgressql而不是postgres

在上面的文档链接中指定我应该在settings.py中安装应用程序:'django.contrib.postgres'

我做了。

我应该从其他地方导入还是django2中的错误行为?

如果我导入django.contrib,我得到的错误是:

result = django.contrib.postgresql.fields.JSONField(blank=True, null=True)
AttributeError: module 'django.contrib' has no attribute 'postgresql'

1 个答案:

答案 0 :(得分:0)

这是Django内省代码中的一个错误。您可以更改模型以使用django.contrib.postgres.fields,并将import django.contrib.postgres.fields添加到models.py

问题将在Django 2.0.5由Django ticket 29307修复。