Powiedzmy, że mam klasę reprezentującą lokalizacje. Lokalizacje „należą” do klientów. Lokalizacje są identyfikowane za pomocą 10-znakowego kodu Unicode. „Kod lokalizacji” powinien być niepowtarzalny wśród lokalizacji dla określonego klienta.
The two below fields in combination should be unique
customer_id = Column(Integer,ForeignKey('customers.customer_id')
location_code = Column(Unicode(10))
Więc jeśli mam dwóch klientów, klienta „123” i klienta „456”. Oba mogą mieć lokalizację zwaną „główną”, ale żadna z nich nie może mieć dwóch lokalizacji zwanych główną.
Potrafię sobie z tym poradzić w logice biznesowej, ale chcę się upewnić, że nie ma możliwości łatwego dodania wymagania w sqlalchemy. Opcja unique = True działa tylko wtedy, gdy zostanie zastosowana do określonego pola i spowodowałaby, że cała tabela miałaby tylko unikalny kod dla wszystkich lokalizacji.
źródło
.c.
to skrót do.columns.
źródło
__table_args__ = (db.UniqueConstraint('customer_id', 'location_code'),)
, nie zapomnij o przecinku na końcu.