36 lines
1.6 KiB
Python
36 lines
1.6 KiB
Python
Here's the `and.py` file with the `AndCreate` and `And` schemas for the `blog_app` application:
|
|
|
|
```python
|
|
# app/api/v1/schemas/and.py
|
|
|
|
from typing import Optional
|
|
from pydantic import BaseModel
|
|
|
|
# AndBase schema
|
|
class AndBase(BaseModel):
|
|
name: str
|
|
description: Optional[str] = None
|
|
|
|
# AndCreate schema for creating a new "and" instance
|
|
class AndCreate(AndBase):
|
|
pass
|
|
|
|
# And schema for reading "and" instances
|
|
class And(AndBase):
|
|
id: int
|
|
name: str
|
|
description: Optional[str] = None
|
|
|
|
class Config:
|
|
orm_mode = True
|
|
```
|
|
|
|
Explanation:
|
|
|
|
1. We import the necessary modules: `typing` for type hints, and `pydantic` for defining data models.
|
|
2. `AndBase` is a base Pydantic model that defines the common fields for both `AndCreate` and `And` schemas. It has two fields: `name` (required) and `description` (optional).
|
|
3. `AndCreate` inherits from `AndBase` and represents the schema for creating a new "and" instance. It doesn't add any additional fields.
|
|
4. `And` inherits from `AndBase` and represents the schema for reading "and" instances. It adds an `id` field, which is typically the primary key in the database.
|
|
5. In the `And` model, we set `orm_mode = True` in the `Config` class. This allows Pydantic to work with ORM objects (e.g., SQLAlchemy models) and automatically convert them to Pydantic models.
|
|
|
|
This file can be used in your FastAPI application to define request and response models for the "and" entity in the `blog_app` context. You can import these models in your API routes and use them for data validation, serialization, and deserialization. |