| 34 | |
| 35 | |
| 36 | def test_model_with_string_annotations(clear_sqlmodel): |
| 37 | class Team(SQLModel, table=True): |
| 38 | id: Annotated[int | None, Field(primary_key=True)] = None |
| 39 | name: str |
| 40 | |
| 41 | class Player(SQLModel, table=True): |
| 42 | id: Annotated[int | None, Field(primary_key=True)] = None |
| 43 | name: str |
| 44 | team_id: Annotated[int | None, Field(foreign_key="team.id")] = None |
| 45 | |
| 46 | engine = create_engine("sqlite://") |
| 47 | SQLModel.metadata.create_all(engine) |
| 48 | |
| 49 | team = Team(name="Champions") |
| 50 | player = Player(name="Alice", team_id=None) |
| 51 | |
| 52 | with Session(engine) as session: |
| 53 | session.add(team) |
| 54 | session.commit() |
| 55 | session.refresh(team) |
| 56 | |
| 57 | player.team_id = team.id |
| 58 | session.add(player) |
| 59 | session.commit() |
| 60 | session.refresh(player) |
| 61 | |
| 62 | assert team.id is not None |
| 63 | assert player.team_id == team.id |