Provide a relationship between two mapped classes. This corresponds to a parent-child or associative table relationship. The constructed class is an instance of :class:`.Relationship`. .. seealso:: :ref:`tutorial_orm_related_objects` - tutorial introduction to :func:`_
(
argument: Optional[_RelationshipArgumentType[Any]] = None,
secondary: Optional[_RelationshipSecondaryArgument] = None,
*,
uselist: Optional[bool] = None,
collection_class: Optional[
Union[Type[Collection[Any]], Callable[[], Collection[Any]]]
] = None,
primaryjoin: Optional[_RelationshipJoinConditionArgument] = None,
secondaryjoin: Optional[_RelationshipJoinConditionArgument] = None,
back_populates: Optional[_RelationshipBackPopulatesArgument] = None,
order_by: _ORMOrderByArgument = False,
backref: Optional[ORMBackrefArgument] = None,
overlaps: Optional[str] = None,
post_update: bool = False,
cascade: str = "save-update, merge",
viewonly: bool = False,
init: Union[_NoArg, bool] = _NoArg.NO_ARG,
repr: Union[_NoArg, bool] = _NoArg.NO_ARG, # noqa: A002
default: Union[_NoArg, _T] = _NoArg.NO_ARG,
default_factory: Union[_NoArg, Callable[[], _T]] = _NoArg.NO_ARG,
compare: Union[_NoArg, bool] = _NoArg.NO_ARG,
kw_only: Union[_NoArg, bool] = _NoArg.NO_ARG,
hash: Union[_NoArg, bool, None] = _NoArg.NO_ARG, # noqa: A002
lazy: _LazyLoadArgumentType = "select",
passive_deletes: Union[Literal["all"], bool] = False,
passive_updates: bool = True,
active_history: bool = False,
enable_typechecks: bool = True,
foreign_keys: Optional[_ORMColCollectionArgument] = None,
remote_side: Optional[_ORMColCollectionArgument] = None,
join_depth: Optional[int] = None,
comparator_factory: Optional[
Type[RelationshipProperty.Comparator[Any]]
] = None,
single_parent: bool = False,
innerjoin: bool = False,
distinct_target_key: Optional[bool] = None,
load_on_pending: bool = False,
query_class: Optional[Type[Query[Any]]] = None,
info: Optional[_InfoType] = None,
omit_join: Literal[None, False] = None,
sync_backref: Optional[bool] = None,
dataclass_metadata: Union[_NoArg, Mapping[Any, Any], None] = _NoArg.NO_ARG,
**kw: Any,
)
| 1057 | |
| 1058 | |
| 1059 | def relationship( |
| 1060 | argument: Optional[_RelationshipArgumentType[Any]] = None, |
| 1061 | secondary: Optional[_RelationshipSecondaryArgument] = None, |
| 1062 | *, |
| 1063 | uselist: Optional[bool] = None, |
| 1064 | collection_class: Optional[ |
| 1065 | Union[Type[Collection[Any]], Callable[[], Collection[Any]]] |
| 1066 | ] = None, |
| 1067 | primaryjoin: Optional[_RelationshipJoinConditionArgument] = None, |
| 1068 | secondaryjoin: Optional[_RelationshipJoinConditionArgument] = None, |
| 1069 | back_populates: Optional[_RelationshipBackPopulatesArgument] = None, |
| 1070 | order_by: _ORMOrderByArgument = False, |
| 1071 | backref: Optional[ORMBackrefArgument] = None, |
| 1072 | overlaps: Optional[str] = None, |
| 1073 | post_update: bool = False, |
| 1074 | cascade: str = class="st">"save-update, merge", |
| 1075 | viewonly: bool = False, |
| 1076 | init: Union[_NoArg, bool] = _NoArg.NO_ARG, |
| 1077 | repr: Union[_NoArg, bool] = _NoArg.NO_ARG, class="cm"># noqa: A002 |
| 1078 | default: Union[_NoArg, _T] = _NoArg.NO_ARG, |
| 1079 | default_factory: Union[_NoArg, Callable[[], _T]] = _NoArg.NO_ARG, |
| 1080 | compare: Union[_NoArg, bool] = _NoArg.NO_ARG, |
| 1081 | kw_only: Union[_NoArg, bool] = _NoArg.NO_ARG, |
| 1082 | hash: Union[_NoArg, bool, None] = _NoArg.NO_ARG, class="cm"># noqa: A002 |
| 1083 | lazy: _LazyLoadArgumentType = class="st">"select", |
| 1084 | passive_deletes: Union[Literal[class="st">"all"], bool] = False, |
| 1085 | passive_updates: bool = True, |
| 1086 | active_history: bool = False, |
| 1087 | enable_typechecks: bool = True, |
| 1088 | foreign_keys: Optional[_ORMColCollectionArgument] = None, |
| 1089 | remote_side: Optional[_ORMColCollectionArgument] = None, |
| 1090 | join_depth: Optional[int] = None, |
| 1091 | comparator_factory: Optional[ |
| 1092 | Type[RelationshipProperty.Comparator[Any]] |
| 1093 | ] = None, |
| 1094 | single_parent: bool = False, |
| 1095 | innerjoin: bool = False, |
| 1096 | distinct_target_key: Optional[bool] = None, |
| 1097 | load_on_pending: bool = False, |
| 1098 | query_class: Optional[Type[Query[Any]]] = None, |
| 1099 | info: Optional[_InfoType] = None, |
| 1100 | omit_join: Literal[None, False] = None, |
| 1101 | sync_backref: Optional[bool] = None, |
| 1102 | dataclass_metadata: Union[_NoArg, Mapping[Any, Any], None] = _NoArg.NO_ARG, |
| 1103 | **kw: Any, |
| 1104 | ) -> _RelationshipDeclared[Any]: |
| 1105 | class="st">"""Provide a relationship between two mapped classes. |
| 1106 | |
| 1107 | This corresponds to a parent-child or associative table relationship. |
| 1108 | The constructed class is an instance of :class:`.Relationship`. |
| 1109 | |
| 1110 | .. seealso:: |
| 1111 | |
| 1112 | :ref:`tutorial_orm_related_objects` - tutorial introduction |
| 1113 | to :func:`_orm.relationship` in the :ref:`unified_tutorial` |
| 1114 | |
| 1115 | :ref:`relationship_config_toplevel` - narrative documentation |
| 1116 |