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
UserPublicto validate and serialize data, and useUserto store\query data: