or_()
অজানা সংখ্যক ও কোয়েরি উপাদানগুলির ক্ষেত্রে ফাংশনটি কার্যকর হতে পারে।
উদাহরণস্বরূপ, ধরে নেওয়া যাক যে আমরা কয়েকটি alচ্ছিক ফিল্টার দিয়ে একটি রেস্ট সার্ভিস তৈরি করছি, যদি কোনও ফিল্টার সত্য হয় তবে রেকর্ডটি ফিরিয়ে আনা উচিত। অন্যদিকে, যদি কোনও অনুরোধে প্যারামিটার সংজ্ঞায়িত না করা হয়, তবে আমাদের কোয়েরিটি পরিবর্তন করা উচিত নয়। 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')))