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
相关产品推荐
相关产品推荐

