Katakanlah saya memiliki kelas yang mewakili lokasi. Lokasi "milik" pelanggan. Lokasi diidentifikasi oleh kode karakter 10 unicode. "Kode lokasi" harus unik di antara lokasi untuk pelanggan tertentu.
The two below fields in combination should be unique
customer_id = Column(Integer,ForeignKey('customers.customer_id')
location_code = Column(Unicode(10))
Jadi, jika saya memiliki dua pelanggan, pelanggan "123" dan pelanggan "456". Mereka berdua dapat memiliki lokasi yang disebut "utama" tetapi juga tidak dapat memiliki dua lokasi yang disebut utama.
Saya dapat menangani ini dalam logika bisnis tetapi saya ingin memastikan tidak ada cara untuk dengan mudah menambahkan persyaratan dalam sqlalchemy. Pilihan unik = True tampaknya hanya berfungsi ketika diterapkan pada bidang tertentu dan itu akan menyebabkan seluruh tabel hanya memiliki kode unik untuk semua lokasi.
sumber
.c.
adalah jalan pintas ke.columns.
sumber
__table_args__ = (db.UniqueConstraint('customer_id', 'location_code'),)
, jangan lupa koma di akhir.