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 мм.


Ответы (0 шт):