Skip to content
Discussion options

You must be logged in to vote

This is because of table=True. Such "table"-models bypass validation on instantiation.

You can use SqlModel.model_validate({"username": 'ABC'}) instead of SqlModel(username='ABC').

But conventional approach is to use separate model\models for input and output data validation:

from typing import Optional

from pydantic.types import StringConstraints
from sqlmodel import Field, SQLModel
from typing_extensions import Annotated

UsernameStr = Annotated[str, StringConstraints(strip_whitespace=True, to_lower=True)]

class SqlModelBase(SQLModel):
    username: UsernameStr

class SqlModelCreate(SqlModelBase):
    pass

class SqlModel(SqlModelBase, table=True):
    id: Optional[str] = Field(default=

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by YuriiMotov
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
2 participants