pydantic-models-py

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Pydantic Models

Pydantic 模型

Create Pydantic models following the multi-model pattern for clean API contracts.
遵循多模型模式创建Pydantic模型,以实现清晰的API契约。

Quick Start

快速开始

Copy the template from assets/template.py and replace placeholders:
  • {{ResourceName}}
    → PascalCase name (e.g.,
    Project
    )
  • {{resource_name}}
    → snake_case name (e.g.,
    project
    )
assets/template.py复制模板并替换占位符:
  • {{ResourceName}}
    → 大驼峰命名(例如:
    Project
  • {{resource_name}}
    → 蛇形命名(例如:
    project

Multi-Model Pattern

多模型模式

ModelPurpose
Base
Common fields shared across models
Create
Request body for creation (required fields)
Update
Request body for updates (all optional)
Response
API response with all fields
InDB
Database document with
doc_type
模型用途
Base
各模型共享的通用字段
Create
创建请求的请求体(必填字段)
Update
更新请求的请求体(所有字段可选)
Response
包含所有字段的API响应
InDB
带有
doc_type
的数据库文档

camelCase Aliases

小驼峰别名

python
class MyModel(BaseModel):
    workspace_id: str = Field(..., alias="workspaceId")
    created_at: datetime = Field(..., alias="createdAt")
    
    class Config:
        populate_by_name = True  # Accept both snake_case and camelCase
python
class MyModel(BaseModel):
    workspace_id: str = Field(..., alias="workspaceId")
    created_at: datetime = Field(..., alias="createdAt")
    
    class Config:
        populate_by_name = True  # Accept both snake_case and camelCase

Optional Update Fields

可选更新字段

python
class MyUpdate(BaseModel):
    """All fields optional for PATCH requests."""
    name: Optional[str] = Field(None, min_length=1)
    description: Optional[str] = None
python
class MyUpdate(BaseModel):
    """All fields optional for PATCH requests."""
    name: Optional[str] = Field(None, min_length=1)
    description: Optional[str] = None

Database Document

数据库文档

python
class MyInDB(MyResponse):
    """Adds doc_type for Cosmos DB queries."""
    doc_type: str = "my_resource"
python
class MyInDB(MyResponse):
    """Adds doc_type for Cosmos DB queries."""
    doc_type: str = "my_resource"

Integration Steps

集成步骤

  1. Create models in
    src/backend/app/models/
  2. Export from
    src/backend/app/models/__init__.py
  3. Add corresponding TypeScript types
  1. src/backend/app/models/
    目录下创建模型
  2. src/backend/app/models/__init__.py
    导出模型
  3. 添加对应的TypeScript类型