diff --git a/sqlmodel/main.py b/sqlmodel/main.py index 63c6dcb..9efdafe 100644 --- a/sqlmodel/main.py +++ b/sqlmodel/main.py @@ -415,6 +415,7 @@ def get_sqlachemy_type(field: ModelField) -> Any: return AutoString if issubclass(field.type_, uuid.UUID): return GUID + raise ValueError(f"The field {field.name} has no matching SQLAlchemy type") def get_column_from_field(field: ModelField) -> Column: # type: ignore diff --git a/tests/test_missing_type.py b/tests/test_missing_type.py new file mode 100644 index 0000000..2185fa4 --- /dev/null +++ b/tests/test_missing_type.py @@ -0,0 +1,21 @@ +from typing import Optional + +import pytest +from sqlmodel import Field, SQLModel + + +def test_missing_sql_type(): + class CustomType: + @classmethod + def __get_validators__(cls): + yield cls.validate + + @classmethod + def validate(cls, v): + return v + + with pytest.raises(ValueError): + + class Item(SQLModel, table=True): + id: Optional[int] = Field(default=None, primary_key=True) + item: CustomType