or_()
fungsi dapat berguna jika ada jumlah komponen permintaan OR yang tidak diketahui.
Misalnya, mari kita asumsikan bahwa kita membuat layanan REST dengan beberapa filter opsional, yang akan mengembalikan catatan jika ada filter yang mengembalikan true. Di sisi lain, jika parameter tidak didefinisikan dalam permintaan, permintaan kami tidak boleh berubah. Tanpa or_()
fungsi kita harus melakukan sesuatu seperti ini:
query = Book.query
if filter.title and filter.author:
query = query.filter((Book.title.ilike(filter.title))|(Book.author.ilike(filter.author)))
else if filter.title:
query = query.filter(Book.title.ilike(filter.title))
else if filter.author:
query = query.filter(Book.author.ilike(filter.author))
Dengan or_()
fungsi itu dapat ditulis ulang untuk:
query = Book.query
not_null_filters = []
if filter.title:
not_null_filters.append(Book.title.ilike(filter.title))
if filter.author:
not_null_filters.append(Book.author.ilike(filter.author))
if len(not_null_filters) > 0:
query = query.filter(or_(*not_null_filters))
filter(or_(User.name == v for v in ('Alice', 'Bob', 'Carl')))