or_()
ฟังก์ชั่นจะมีประโยชน์ในกรณีที่ไม่ทราบจำนวนขององค์ประกอบแบบสอบถามหรือ
ตัวอย่างเช่นสมมติว่าเรากำลังสร้างบริการ REST พร้อมตัวกรองเสริมบางตัวที่ควรส่งคืนเร็กคอร์ดหากตัวกรองใด ๆ คืนค่าเป็นจริง อีกด้านหนึ่งหากพารามิเตอร์ไม่ได้ถูกกำหนดในคำขอแบบสอบถามของเราไม่ควรเปลี่ยนแปลง หากไม่มีor_()
ฟังก์ชั่นเราจะต้องทำสิ่งนี้:
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))
ด้วยor_()
ฟังก์ชั่นสามารถเขียนใหม่เป็น:
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')))