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

如何将OpenAPI.yaml Schema转为Django Models?求DRF类似fastapi-codegen的工具

将OpenAPI Schema转换为Django Models(DRF)

针对你的需求,有几个实用的工具和手动方案可以实现OpenAPI Schema到Django Models的转换,下面逐一说明:

一、专用生成工具

1. django-openapi-codegen

这是专门针对DRF的代码生成工具,直接从OpenAPI YAML/JSON生成Django模型和DRF序列化器。

  • 安装:pip install django-openapi-codegen
  • 使用示例:
    在项目根目录执行命令:
    django-openapi-codegen generate --input openapi.yaml --output ./myapp/models.py
    
    工具会自动根据Schema定义生成带字段、约束(比如max_length、null允许)的Django模型,以及对应的DRF序列化器类。

2. Swagger Codegen

官方的Swagger Codegen支持Django模板,可以生成符合DRF规范的模型和视图代码:

  • 首先下载Swagger Codegen的jar包(或用Docker镜像)
  • 执行生成命令(以jar包为例):
    java -jar swagger-codegen-cli.jar generate \
      -i openapi.yaml \
      -l django \
      -o ./drf-api
    
    生成的代码包含完整的Django app结构,包括models.py、serializers.py和views.py,直接可以集成到现有项目中。

二、手动转换方案(适合定制化需求)

如果工具生成的代码不符合你的项目规范,或者需要更精细的控制,可以手动映射Schema字段到Django模型:

  • 字段类型映射:
    • OpenAPI的string → Django CharField(或TextField,根据长度)
    • integer → IntegerField/PositiveIntegerField/BigIntegerField(根据format)
    • number → FloatField/DecimalField
    • boolean → BooleanField
    • array → 若为关联模型数组,用ManyToManyField;若为基础类型数组,可结合ArrayField(PostgreSQL支持)
    • object → 嵌套模型(用OneToOneField)或JSONField(如果不需要数据库结构化存储)
  • 约束映射:
    • OpenAPI的maxLength → Django max_length参数
    • nullable: true → null=True, blank=True
    • default → Django default参数
    • enum → Django choices参数

比如,OpenAPI Schema定义:

User:
  type: object
  properties:
    id:
      type: integer
      format: int64
    username:
      type: string
      maxLength: 50
    email:
      type: string
      format: email
    is_active:
      type: boolean
      default: true

对应的Django模型:

from django.db import models

class User(models.Model):
    id = models.BigIntegerField(primary_key=True)
    username = models.CharField(max_length=50)
    email = models.EmailField()
    is_active = models.BooleanField(default=True)

补充提示

  • 工具生成的代码建议先做Review,调整字段命名、关联关系等细节,确保符合项目的数据库设计规范
  • 如果Schema中有复杂的嵌套或多态结构,手动调整会更灵活

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:36:21