diff --git a/sqlmodel/main.py b/sqlmodel/main.py index d95c498507..96b99164de 100644 --- a/sqlmodel/main.py +++ b/sqlmodel/main.py @@ -319,7 +319,7 @@ def __init__( # triggers an error base_is_table = False for base in bases: - config = getattr(base, "__config__") + config = getattr(base, "__config__", None) if config and getattr(config, "table", False): base_is_table = True break diff --git a/tests/test_mixin.py b/tests/test_mixin.py new file mode 100644 index 0000000000..48864e83ab --- /dev/null +++ b/tests/test_mixin.py @@ -0,0 +1,23 @@ +from typing import Optional + +import pytest +from sqlmodel import Field, SQLModel + + +class FooMixin: + pass + + +@pytest.mark.usefixtures("clear_sqlmodel") +def test_mixin(): + """Test SQLModel in combination with a mixin. + + https://github.com/tiangolo/sqlmodel/issues/254 + + """ + + class Hero(FooMixin, SQLModel, table=True): + id: Optional[int] = Field(default=None, primary_key=True) + name: str + secret_name: str + age: Optional[int] = None