Here is the code:
if len(test1) > 0 or len(test2) > 0 or len(test3) > 0 or len(test4) > 0:
filter_conditions = []
if len(test1) > 0:
filter_conditions.append(Object.test1.in_(test1))
if len(test2) > 0:
filter_conditions.append(Object.test2.in_(test2))
if len(test3) > 0:
filter_conditions.append(and_(Object.test3.in_(test3),
Object.istest == 1))
if len(test4) > 0:
filter_conditions.append(and_(Object.test4.in_(test4),
Object.istest == 1))
final_filter_conditions = or_(*filter_conditions)
count_query = count_query.filter(final_filter_conditions)
this return the result with where clause like this:
WHERE Object."istester" = :istester AND (Object."test1" IN ([test1_1]) OR Object."test2" IN ([POSTCOMPILE_test2_1]) OR (Object."test3" IN ([POSTCOMPILE_test3_2]) AND Object."istest" = :istest_1) OR Object."test4" IN ([POSTCOMPILE_test4]) AND Object."istest" = :istest_2)
I want to achieve like this: need two brackets WHERE Object."istester" = :istester AND (Object."test1" IN ([test1_1]) OR Object."test2" IN ([POSTCOMPILE_test2_1]) OR (Object."test3" IN ([POSTCOMPILE_test3_2]) AND Object."istest" = :istest_1) OR (Object."test4" IN ([POSTCOMPILE_test4]) AND Object."istest" = :istest_2))'
Thanks
WHERE Object."istester" = :istester AND (Object."test1" IN ([test1_1]) OR Object."test2" IN ([POSTCOMPILE_test2_1]) OR (Object."test3" IN ([POSTCOMPILE_test3_2]) AND Object."istest" = :istest_1) OR Object."test4" IN ([POSTCOMPILE_test4]) AND Object."istest" = :istest_2)
use .self_group() at the end of each clause.