AbstractEntity, which extends SQLModel with additional functionality.
AbstractEntity Class
TheAbstractEntity class is the base class for all database entities in Framefox:
framefox/core/orm/abstract_entity.py:15
Key Methods
generate_create_model()
Generates a Pydantic model for creating new entities (excludes the id field):
framefox/core/orm/abstract_entity.py:18
get_primary_keys()
Returns the list of primary key column names:
framefox/core/orm/abstract_entity.py:32
generate_find_model()
Generates a Pydantic model for finding entities by primary key:
framefox/core/orm/abstract_entity.py:44
generate_patch_model()
Generates a Pydantic model for partial updates with all fields optional:
framefox/core/orm/abstract_entity.py:59
Creating Entity Models
Define your database models by inheriting fromAbstractEntity:
Key Components
table=True: Marks this class as a database table- Primary Key: Use
Field(primary_key=True)for the primary key - Optional Fields: Use
Optional[Type]with default values - Constraints: Use
Field()parameters for database constraints
Field Types and Relationships
Basic Field Types
SQLModel supports standard Python types:Field Constraints
UseField() to add constraints and metadata:
Relationships
Define relationships between entities using SQLModel’s relationship syntax:Pydantic Validation
SinceAbstractEntity extends SQLModel (which uses Pydantic), you get automatic validation:
Validation Example
Using Generated Models
TheAbstractEntity provides methods to generate helper models:
Best Practices
- Always use
Optionalfor nullable fields: Be explicit about which fields can beNone - Set
table=True: Don’t forget to mark entities as tables - Use Field constraints: Leverage
Field()for validation and database constraints - Index frequently queried fields: Add
index=Trueto fields used in WHERE clauses - Validate at the model level: Use Pydantic validators for business logic validation
- Document relationships: Use clear relationship names with
back_populates
Next Steps
Repositories
Learn how to query and persist entities
Query Builder
Build complex queries