Skip to content

Unfazed Serializer

Unfazed 提供一个简单的基于 tortoise-orm model 的序列化器,并提供相应的增删改查方法。

快速开始


```python

from tortoise import Model, fields
from unfazed.serializer import Serializer

class Student(Model):
    name = fields.CharField(max_length=255)
    age = fields.IntField()


class StudentSerializer(Serializer):
    class Meta:
        model = Student

# create a student

class StudentCreate(BaseModel):
    name: str
    age: int

StudentSerializer.create_from_ctx(StudentCreate(name="student1", age=18))

# update a student

class StudentUpdate(BaseModel):
    id: int
    name: str
    age: int

StudentSerializer.update_from_ctx(StudentUpdate(id=1, name="student1", age=19))


# delete a student

class StudentDelete(BaseModel):
    id: int

StudentSerializer.destroy_from_ctx(StudentDelete(id=1))

# retrieve a student
class StudentRetrieve(BaseModel):
    id: int

StudentSerializer.retrieve_from_ctx(StudentRetrieve(id=1))


# find relation

class Course(Model):
    name = fields.CharField(max_length=255)
    students = fields.ManyToManyField("models.Student", related_name="courses")

class CourseSerializer(Serializer):
    class Meta:
        model = Course

StudentSerializer.find_relation(CourseSerializer)

高级

参数覆盖

Serializer 支持参数覆盖与新增。


from unfazed.serializer import Serializer
from .models import User

class StudentSerializer(Serializer):
    class Meta:
        model = Student

    age: str
    sex: int


Meta 选项

Serializer 支持 Meta 选项,用于配置 model 与 fields。


from unfazed.serializer import Serializer
from .models import User

class StudentSerializer(Serializer):
    class Meta:
        model = Student
        include = ["name", "age"]

        # 或者 exclude
        # exclude = ["id"]

与 tortoise-orm 配合

在涉及到关系字段时,需要特别注意 tortoise-orm 初始化时间

参考 https://github.com/tortoise/tortoise-orm/blob/develop/examples/pydantic/early_init.py serializer 的初始化一定要放在 tortoise-orm 初始化之后