现在遇到的一个问题就是,一个模型,要使用 pydantic 和 peewee 各自定义一次,比较繁琐,尤其是字段很多的时候
pydantic 模型
class ShortDramaModel(BaseModel):
drama_name: str = Field(..., description="短剧名称")
view_count: int | None = Field(None, description="播放数")
drama_type: str | None = Field(None, description="类型(比如现代言情、历史古代)")
available_episodes: int | None = Field(None, description="当前可看的集数")
total_episodes: int | None = Field(None, description="总集数")
is_finished: bool | None = Field(None, description="是否完结")
online_micro_drama_record_number: str | None = Field(
None, description="网微剧备案号")
like_count: int | None = Field(None, description="点赞数")
cover_image_url: str | None = Field(None, description="封面图链接")
peewee 模型
class ShortDramaModel(Model):
drama_name = CharField(unique=True, null=False, verbose_name="短剧名称")
view_count = IntegerField(null=True, verbose_name="播放数")
drama_type = CharField(null=True, verbose_name="类型(比如现代言情、历史古代)")
available_episodes = IntegerField(null=True, verbose_name="当前可看的集数")
total_episodes = IntegerField(null=True, verbose_name="总集数")
is_finished = BooleanField(null=True, verbose_name="是否完结")
online_micro_drama_record_number = CharField(null=True, verbose_name="网微剧备案号")
like_count = IntegerField(null=True, verbose_name="点赞数")
cover_image_url = CharField(null=True, verbose_name="封面图链接")
class Meta:
database = db
基于 dataclass 的元模型方案,结合生成器自动创建 Pydantic 和 Peewee 模型:
使用
1.定义新模型:只需创建一个新的 XxxMeta 类,填入字段定义。
2.生成模型:调用生成函数即可获得 Pydantic 和 Peewee 模型。
3.集成:直接在 FastAPI(用 Pydantic)或数据库操作(用 Peewee)中使用。