You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django2 inspectdb生成错误路径JSONField的技术求助

解决Django inspectdb生成JSONField导入路径拼写错误的问题

嘿,我懂你的懊恼——特意升级到Django 2就是为了让inspectdb能识别PostgreSQL的JSON字段,结果自动生成的代码还搞出个拼写错误,确实挺糟心的。

问题出在哪?

inspectdb生成模型代码时,把正确的导入路径django.contrib.postgres.fields.JSONField错误拆成了django.contrib.postgre sql.fields.JSONField(注意postgre和sql中间多了个空格),而且这个错误出现在AsyncResults类相关的代码里,导致你没法正常导入JSONField。

快速修复方案

  1. 手动修正导入语句
    打开生成的models.py文件,找到那行错误的导入,直接把空格删掉:

    # 错误写法(带空格)
    from django.contrib.postgre sql.fields import JSONField
    
    # 改成正确的导入
    from django.contrib.postgres.fields import JSONField
    
  2. 同步修正字段定义
    再检查AsyncResults类里的JSON字段定义,如果是用完整路径写的,也要把空格去掉;如果已经用了导入的类名,这步可以跳过:

    class AsyncResults(models.Model):
        # 错误的字段定义
        your_json_field = django.contrib.postgre sql.fields.JSONField()
    
        # 修正后(推荐用导入后的类名)
        your_json_field = JSONField()
    

避免后续再踩坑(可选)

如果你经常要通过inspectdb生成带JSON字段的模型,可以自定义inspectdb的行为来彻底解决这个问题:

  • 找到Django源码里的django/db/backends/postgresql/introspection.py文件
  • 定位到生成JSONField导入路径的代码段,确保postgres是连写的字符串,不会被错误拆分

改完之后,跑一下python manage.py check验证下有没有导入错误,再正常使用模型就没问题啦!

内容的提问来源于stack exchange,提问作者Erindy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:18:19