Допустим, у меня есть класс, который представляет местоположения. Места "принадлежат" клиентам. Местоположения обозначены 10-символьным кодом Unicode. «Код местоположения» должен быть уникальным среди местоположений для конкретного клиента.
The two below fields in combination should be unique
customer_id = Column(Integer,ForeignKey('customers.customer_id')
location_code = Column(Unicode(10))
Так что, если у меня есть два клиента, клиент "123" и клиент "456". Они оба могут иметь местоположение, называемое «основным», но ни одно из них не может иметь двух мест, называемых основным.
Я могу справиться с этим в бизнес-логике, но хочу убедиться, что нет никакого способа легко добавить требование в sqlalchemy. Опция unique = True работает только применительно к определенному полю, и это приведет к тому, что вся таблица будет иметь уникальный код только для всех местоположений.
источник
.c.
является ярлыком.columns.
источник
__table_args__ = (db.UniqueConstraint('customer_id', 'location_code'),)
, не забывайте запятую в конце.