How to create a Model with a filed not int table. #1352
First Check
Commit to Help
Example Codefrom sqlmodel import SQLModel, Field, Session, create_engine
class User(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
username: str
password: str
# try to exclude token from table, but it would't work.
token: str = Field(default=None, exclude=True)
# 创建数据库和表
engine = create_engine("sqlite:///demo.db")
SQLModel.metadata.create_all(engine)
user = User(username="admin", password="secret", token="abc123")
with Session(engine) as session:
session.add(user)
session.commit()DescriptionHow can I create a model with a filed not in table. Operating SystemmacOS Operating System DetailsNo response SQLModel Version0.0.24 Python Version3.10 Additional ContextNo response |
Answered by
YuriiMotov
Aug 21, 2025
Replies: 3 comments
|
https://fastapi.tiangolo.com/tutorial/sql-databases/#create-multiple-models |
0 replies
|
hi @zhiguoxu, imo u lookin for pydantic PrivateAttr which is not released yet: issues:
pr (still in progress) but, if u want to add this field at all cost u can use:
|
0 replies
|
https://fastapi.tiangolo.com/tutorial/sql-databases/#create-multiple-models Create one more model (use inheritance to reduce duplication): class UserBase(SQLModel):
id: int | None = Field(default=None, primary_key=True)
username: str
password: str
class User(UserBase, table=True):
pass
class UserPublic(UserBase):
token: Optional[str] = Field(default=None)Then use from typing import Optional
from sqlmodel import SQLModel, Field, Session, create_engine
class UserBase(SQLModel):
id: int | None = Field(default=None, primary_key=True)
username: str
password: str
class User(UserBase, table=True):
pass
class UserPublic(UserBase):
token: Optional[str] = Field(default=None)
engine = create_engine("sqlite:///demo.db")
SQLModel.metadata.create_all(engine)
user_public = UserPublic(username="admin", password="secret", token="abc123")
user = User.model_validate(user_public)
with Session(engine) as session:
session.add(user)
session.commit() |
0 replies
Answer selected by
YuriiMotov
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
https://fastapi.tiangolo.com/tutorial/sql-databases/#create-multiple-models
Create one more model (use inheritance to reduce duplication):
Then use
UserPublicto validate and serialize data, and useUserto store\query data: