codegeex 生成 django 模型需满足三条件:插件已激活、python 解释器指向含 django 的虚拟环境、models.py 中显式声明 app_label;否则 makemigrations 不识别模型。

直接用 CodeGeeX 插件在 models.py 里写中文描述,比手写 Django 模型快得多,但必须满足三个硬性条件:插件已激活、Python 解释器指向含 Django 的环境、app_label 显式声明——缺一不可,否则生成的类连 makemigrations 都看不到。
CodeGeeX 生成 Django 模型前必须做的三件事
很多用户卡在“点了 Ctrl+Alt+I 没反应”或“生成了代码但迁移不生效”,问题几乎都出在这三步没做对:
- 确认右下角状态栏有
CodeGeeX图标(⚡),没有就按Ctrl+Shift+P输入CodeGeeX: Toggle手动启用;未激活时快捷键完全失效 - 在 VSCode 设置里检查 Python 解释器路径,必须指向你项目虚拟环境中的
python(比如./venv/bin/python或.\venv\Scripts\python.exe),而不是系统全局 Python;否则字段类型推断会出错,甚至生成CharField写成StringField - 在
models.py顶部添加class Meta: app_label = 'your_app_name',名字必须和INSTALLED_APPS里注册的一致;Django 不会自动从文件路径推导 app 名,漏写会导致模型被忽略
中文描述怎么写才让生成结果可用
CodeGeeX 对自然语言的理解依赖上下文结构,空泛描述(如“写个用户表”)容易生成不合规字段。推荐用“字段名 + 类型约束 + 行为说明”三段式:
- 避免:“做个订单表” → 可能漏掉
ForeignKey或auto_now_add - 推荐:“生成订单模型,包含订单号(字符串,唯一,最大长度64)、用户(外键关联 auth.User)、创建时间(自动设为创建时间)、总价(小数,最多10位,2位小数)、状态(字符,可选值:'pending','paid','shipped')”
- 注意:关键词如“外键”“自动设为创建时间”“可选值”会被准确映射为
ForeignKey、auto_now_add=True、choices=...;但“必填”要写成“非空”,否则可能漏blank=False
生成后必须手动补的两处关键代码
AI 生成的模型类是骨架,但 Django 实际运行中两个地方它不会自动加,不补就会在调试或管理后台出问题:
-
__str__方法:生成代码里基本没有,但 Django Admin 和日志打印全靠它;建议补一句return f"{self.name} ({self.id})"(把name换成你主标识字段) - 应用注册与迁移:生成完别忘了在终端执行
python manage.py makemigrations和python manage.py migrate;如果提示 “No changes detected”,大概率是app_label拼错了或没写
最容易被忽略的是:CodeGeeX 生成的代码默认不带 verbose_name 和 verbose_name_plural,虽然不影响运行,但进 Django Admin 时表名显示为英文复数(如 product 显示成 products),中文项目里这点细节会直接影响协作效率。











