Skip to content

Commit 7a2b7af

Browse files
Adding _init_private_attributes to SQLModel __init__ function.
1 parent 75ce455 commit 7a2b7af

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

sqlmodel/main.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,7 @@ def __init__(__pydantic_self__, **data: Any) -> None:
514514
for key in non_pydantic_keys:
515515
if key in __pydantic_self__.__sqlmodel_relationships__:
516516
setattr(__pydantic_self__, key, data[key])
517+
__pydantic_self__._init_private_attributes()
517518

518519
def __setattr__(self, name: str, value: Any) -> None:
519520
if name in {"_sa_instance_state"}:

tests/test_private_attributes.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from typing import Optional
2+
3+
from pydantic import PrivateAttr
4+
from sqlmodel import Field, SQLModel
5+
6+
7+
def test_private_attribute():
8+
class Hero(SQLModel, table=True):
9+
primary_key: Optional[int] = Field(
10+
default=None,
11+
primary_key=True,
12+
)
13+
_private_attribute: str = PrivateAttr(default="my_private_attribute")
14+
15+
hero = Hero()
16+
assert hero._private_attribute == "my_private_attribute"
17+
assert "primary_key" in hero.dict()
18+
assert "_private_attribute" not in hero.dict()

0 commit comments

Comments
 (0)