diff --git a/reflex/utils/compat.py b/reflex/utils/compat.py index ef5fcd3e1..27c4753db 100644 --- a/reflex/utils/compat.py +++ b/reflex/utils/compat.py @@ -69,3 +69,21 @@ def pydantic_v1_patch(): with pydantic_v1_patch(): import sqlmodel as sqlmodel + + +def sqlmodel_field_has_primary_key(field) -> bool: + """Determines if a field is a priamary. + + Args: + field: a rx.model field + + Returns: + If field is a primary key (Bool) + """ + if getattr(field.field_info, "primary_key", None) is True: + return True + if getattr(field.field_info, "sa_column", None) is None: + return False + if getattr(field.field_info.sa_column, "primary_key", None) is True: + return True + return False