@@ -1794,7 +1794,7 @@ def get_enum_from_base(
17941794 has_one_literal = True
17951795 if isinstance (discriminator_model , msgspec_model .Struct ): # pragma: no cover
17961796 discriminator_model .add_base_class_kwarg ("tag_field" , f"'{ field_name } '" )
1797- discriminator_model .add_base_class_kwarg ("tag" , discriminator_field . represented_default )
1797+ discriminator_model .add_base_class_kwarg ("tag" , repr ( expected_value ) )
17981798 discriminator_field .extras ["is_classvar" ] = True
17991799 # Found the discriminator field, no need to keep looking
18001800 break
@@ -1811,6 +1811,20 @@ def get_enum_from_base(
18111811 if self .use_enum_values_in_discriminator :
18121812 enum_source = enum_source or get_enum_from_base ()
18131813
1814+ if (
1815+ expected_value is not None
1816+ and enum_source
1817+ and isinstance (discriminator_model , msgspec_model .Struct )
1818+ ):
1819+ has_one_literal = True
1820+ discriminator_model .add_base_class_kwarg ("tag_field" , f"'{ field_name } '" )
1821+ discriminator_model .add_base_class_kwarg (
1822+ "tag" ,
1823+ repr (Parser ._get_enum_discriminator_literal (enum_source , expected_value )),
1824+ )
1825+ discriminator_field .extras ["is_classvar" ] = True
1826+ break
1827+
18141828 for field_data_type in discriminator_field .data_type .all_data_types :
18151829 if field_data_type .reference : # pragma: no cover
18161830 self .generation_store .detach_data_type_ref (field_data_type )
0 commit comments