使用codegeex生成django模型有五种方法:一、结构化自然语言提示;二、基于sql建表语句反向生成;三、优化inspectdb生成的模型字段注释与关系;四、用yaml schema驱动生成;五、由drf序列化器反推模型字段。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在使用CodeGeeX辅助Django开发时,希望快速生成符合Django ORM规范的数据库模型定义,则可能是由于缺乏对CodeGeeX提示词结构或Django模型语法的精准把握。以下是实现该目标的多种方法:
一、使用结构化自然语言提示词生成Model类
该方法依赖于向CodeGeeX提供清晰、含字段类型与约束的中文描述,使其准确映射为Django Field声明。提示词需包含表名、字段名、数据类型、是否为空、默认值及外键关系等关键要素。
1、在CodeGeeX编辑器中输入提示词:“请生成一个Django模型类,名为Article,包含字段:title(CharField,最大长度200,非空),content(TextField,可为空),pub_date(DateTimeField,自动设置为创建时间),is_published(BooleanField,默认True)。”
2、确认生成代码中models.py片段是否包含from django.db import models导入语句。
3、检查生成的class Article(models.Model):内部字段是否使用了models.CharField、models.TextField等正确类型,并带有相应参数如max_length、blank、default、auto_now_add等。
二、基于已有SQL建表语句反向提示生成Model
该方法适用于已有MySQL或PostgreSQL的CREATE TABLE语句场景,通过将SQL语义转译为Django模型逻辑,提升字段类型推断准确性。
1、复制原始SQL语句,例如:“CREATE TABLE blog_post (id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(255) NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP);”
2、向CodeGeeX输入提示:“根据以下SQL建表语句,生成对应的Django模型类,注意将VARCHAR转为CharField并指定max_length,DATETIME转为DateTimeField,主键id保留为默认AutoField,DEFAULT CURRENT_TIMESTAMP对应auto_now_add=True。”
3、验证生成结果中是否省略了id字段声明(因Django默认添加),且created_at字段是否设置为auto_now_add=True而非default=timezone.now。
三、利用Django内置命令+CodeGeeX优化字段注释与关系
该方法结合manage.py inspectdb生成基础模型后,借助CodeGeeX增强可读性与业务语义,重点补充verbose_name、help_text及ForeignKey关联说明。
1、在终端执行python manage.py inspectdb > models_auto.py,获得初步模型代码。
提供使用 django-unfold (v0.56+) 构建高级 Django 管理界面的专业指导。当用户提及 django-unfold、unfold admin 等内容时使用此技能。
2、将models_auto.py中某段模型代码粘贴至CodeGeeX,并提示:“为以下Django模型字段添加中文verbose_name和help_text,其中author字段是ForeignKey,需注明关联到settings.AUTH_USER_MODEL,并添加on_delete=models.CASCADE。”
3、核对输出代码中每个Field参数是否新增了verbose_name='作者'、help_text='发布该文章的用户账号'等字符串字面量。
四、通过YAML Schema定义驱动Model生成
该方法采用声明式配置先行策略,先编写轻量YAML描述表结构,再让CodeGeeX将其编译为Django模型,便于团队统一字段命名与约束标准。
1、编写YAML片段如下:
model: UserProfile
fields:
- name: nickname
type: CharField
max_length: 50
verbose_name: 昵称
- name: avatar
type: ImageField
upload_to: avatars/
blank: true
2、向CodeGeeX提交提示:“将上述YAML配置转换为Django模型类UserProfile,确保ImageField引入from django.db.models import ImageField,并在Meta类中设置verbose_name='用户资料'。”
3、确认生成代码顶部是否包含from django.db import models及from django.core.files.storage import default_storage(如需),且upload_to参数值为'avatars/'字符串。
五、基于Django REST Framework序列化器反推Model字段
该方法适用于已定义Serializer类的项目,利用序列化器字段与Model字段的高度对应性,逆向生成精简版Model骨架,特别适合API优先开发流程。
1、提供类似以下Serializer代码:“class BookSerializer(serializers.ModelSerializer): class Meta: model = Book fields = ['isbn', 'title', 'price']”
2、向CodeGeeX提问:“根据该BookSerializer推断Book模型应包含哪些字段,要求isbn为CharField(max_length=13)、title为CharField(max_length=200)、price为DecimalField(max_digits=8, decimal_places=2)。”
3、检查输出中是否未出现read_only=True或write_only=True等Serializer专属参数,且DecimalField是否严格包含max_digits=8与decimal_places=2两个参数。










