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

Django Ninja框架自定义Schema序列化User模型字段丢失问题求助

问题原因及解决方案

核心原因

你自定义的UserBase Schema字段声明语法错误:

  • 只有id字段用了正确的Pydantic类型注解语法(id: int)
  • 其余字段用了赋值语句(username = str),这相当于给字段设置默认值为str类本身,而非声明字段类型。Pydantic不会将这类字段识别为需要序列化的目标字段,所以最终响应只包含正确声明的id。

正确的自定义Schema写法

把所有字段的赋值语法改成类型注解即可:

class UserBase(Schema):
    """Base user schema for GET method."""

    id: int
    username: str
    first_name: str
    last_name: str
    email: str

为什么ModelSchema能正常工作

ModelSchema是Django Ninja提供的专门用于映射Django模型的工具类,它会根据Config中的model和model_fields配置,自动为每个字段生成正确的Pydantic类型注解,无需手动逐个声明,因此能正确序列化所有指定字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:40:29