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 |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments
-
https://fastapi.tiangolo.com/tutorial/sql-databases/#create-multiple-models |
Beta Was this translation helpful? Give feedback.
-
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:
|
Beta Was this translation helpful? Give feedback.
-
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() |
Beta Was this translation helpful? Give feedback.
https://fastapi.tiangolo.com/tutorial/sql-databases/#create-multiple-models
Create one more model (use inheritance to reduce duplication):
Then use
UserPublic
to validate and serialize data, and useUser
to store\query data: