From 4071b0fc6485c9f8f037140af7e4bd65c0d99774 Mon Sep 17 00:00:00 2001 From: John Lyu Date: Tue, 26 Nov 2024 10:54:26 +0800 Subject: [PATCH] fix polymorphic_on check --- sqlmodel/_compat.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/sqlmodel/_compat.py b/sqlmodel/_compat.py index 6b7d53b..52a98e5 100644 --- a/sqlmodel/_compat.py +++ b/sqlmodel/_compat.py @@ -294,16 +294,19 @@ if IS_PYDANTIC_V2: # Override polymorphic_on default value mapper = inspect(cls) polymorphic_on = mapper.polymorphic_on - polymorphic_property = mapper.get_property_by_column(polymorphic_on) - field_info = cls.model_fields.get(polymorphic_property.key) - if field_info: - v = values.get(polymorphic_property.key) - # if model is inherited or polymorphic_on is not explicitly set - # set the polymorphic_on by default - if mapper.inherits or v is None: - setattr( - self_instance, polymorphic_property.key, mapper.polymorphic_identity - ) + if polymorphic_on: + polymorphic_property = mapper.get_property_by_column(polymorphic_on) + field_info = cls.model_fields.get(polymorphic_property.key) + if field_info: + v = values.get(polymorphic_property.key) + # if model is inherited or polymorphic_on is not explicitly set + # set the polymorphic_on by default + if mapper.inherits or v is None: + setattr( + self_instance, + polymorphic_property.key, + mapper.polymorphic_identity, + ) return self_instance def sqlmodel_validate(