first chapter
This commit is contained in:
9
models/address.py
Normal file
9
models/address.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class Address(BaseModel):
|
||||
street: str
|
||||
house_number: int | str
|
||||
city: str
|
||||
18
models/character.py
Normal file
18
models/character.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from models.address import Address
|
||||
from models.user import User, UserFieldValidator
|
||||
|
||||
|
||||
class CharacterModel(BaseModel):
|
||||
role: str
|
||||
user: User
|
||||
address: Address
|
||||
|
||||
class CharacterModelOptionalAddress(BaseModel):
|
||||
role: str
|
||||
user: UserFieldValidator
|
||||
address: Address | None = None
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Union, Optional
|
||||
from pydantic import BaseModel, PositiveInt, field_validator, Field
|
||||
from pydantic import BaseModel, PositiveInt, field_validator, Field, ValidationError
|
||||
|
||||
|
||||
class User(BaseModel):
|
||||
@@ -38,24 +38,28 @@ class UserPositiveInt(BaseModel):
|
||||
class UserFieldValidator(BaseModel):
|
||||
name: str
|
||||
surname: str
|
||||
age: PositiveInt | None
|
||||
age: int | None
|
||||
registered: bool = False
|
||||
|
||||
@field_validator("age")
|
||||
def validate_age(cls, value):
|
||||
if value < 0:
|
||||
raise ValidationError("age must be positive")
|
||||
if value < 18:
|
||||
raise ValueError("age must be at least 18")
|
||||
raise ValidationError("age must be at least 18")
|
||||
return value
|
||||
|
||||
|
||||
class UserMaxLength(BaseModel):
|
||||
name: str = Field(..., max_length=10)
|
||||
surname: str = Field(..., max_length=10)
|
||||
age: PositiveInt | None
|
||||
surname: str = Field(..., max_length=12)
|
||||
age: int | None
|
||||
registered: bool = False
|
||||
|
||||
@field_validator("age")
|
||||
def check_age(cls, value):
|
||||
if value < 0:
|
||||
raise ValidationError("age must be positive")
|
||||
if value < 18:
|
||||
raise ValueError("You are too young to register")
|
||||
return value
|
||||
Reference in New Issue
Block a user