sqlalchemy: ограничить значения одного поля в зависимости от значения в другом поле
Как средствами ORM ограничить пул значений для поля в зависимости от значения в другом поле?
Определяю модель:
class Part(Base):
product_id: Mapped[int] = mapped_column(ForeignKey('products.id'))
material: Mapped[MaterialEnum]
thick: Mapped[int]
size: Mapped[str]
machine: Mapped[MachineEnum]
bend: Mapped[boolean] = mapped_column(default=False, server_default=False)
Доступные значения thick (толщина) зависят от material (материал).
Их я беру отсюда:
import enum
class MaterialEnum(str, enum.Enum):
STEEL = "Сталь"
STN_STEEL = "Нерж.сталь"
STN_POL_STEEL = "Шлиф.Нерж.Сталь"
ALUMINUM = "Алюминий"
TITANIUM = "Титан"
ZINC = "Цинк"
NICKEL = "Никель"
IRON = "Железо"
CHROME = "Хром"
class ThickEnum(int, enum.Enum):
THICK_2 = 2
THICK_3 = 3
THICK_4 = 4
THICK_5 = 5
Как обозначить связь между MaterialEnum и ThickEnum на уровне ORM? Или в этом нет смысла? Например, сталь может быть только 3 мм, 4 мм, 5 мм, а алюминий - 2 мм и 3 мм.