45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
from typing import Optional, Dict, Union
|
|
|
|
import databases
|
|
import sqlalchemy
|
|
|
|
import ormar
|
|
|
|
database = databases.Database("sqlite:///db.sqlite")
|
|
metadata = sqlalchemy.MetaData()
|
|
|
|
|
|
class Department(ormar.Model):
|
|
class Meta:
|
|
database = database
|
|
metadata = metadata
|
|
|
|
id: int = ormar.Integer(primary_key=True)
|
|
name: str = ormar.String(max_length=100)
|
|
|
|
|
|
class Course(ormar.Model):
|
|
class Meta:
|
|
database = database
|
|
metadata = metadata
|
|
|
|
id: int = ormar.Integer(primary_key=True)
|
|
name: str = ormar.String(max_length=100)
|
|
completed: bool = ormar.Boolean(default=False)
|
|
department: Optional[Union[Department, Dict]] = ormar.ForeignKey(Department)
|
|
|
|
|
|
department = Department(name="Science")
|
|
|
|
# set up a relation with actual Model instance
|
|
course = Course(name="Math", completed=False, department=department)
|
|
|
|
# set up relation with only related model pk value
|
|
course2 = Course(name="Math II", completed=False, department=department.pk)
|
|
|
|
# set up a relation with dictionary corresponding to related model
|
|
course3 = Course(name="Math III", completed=False, department=department.dict())
|
|
|
|
# explicitly set up None
|
|
course4 = Course(name="Math III", completed=False, department=None)
|