我想写一个查询,例如
`Select * from my_table where 'parameter1' LIKE CONCAT("%", col_1, "%")
OR 'parameter2' LIKE CONCAT("%", col_1, "%") AND (col_2 IS NULL OR 'parameter3' LIKE CONCAT ("%", col_2, "%") AND (col_3 IS NULL OR col_3='parameter4')`.
我一直在尝试以下方面。
first_partial_qs = ModelName.extra(where=["%s LIKE CONCAT ('%%', col_1, '%%')"],params=[something1])
first_final_qs = first_partial_qs | ModelName.extra(where=["%s LIKE CONCAT ('%%', col_1, '%%')"],params=[something2])
second_qs = ModelName.filter(col_2__isnull=True) | ModelName.extra(where=["%s LIKE CONCAT ('%%', col_2, '%%')"], params=[something3])
third_qs = ModelName.filter(Q(col_3__isnull=True) | Q(col_3=something4))
我想知道我该怎么做
final_qs = first_final_qs AND second_qs AND third_qs
但是因为生活并不那么简单(对于django开发人员,因为他们会弃用extra()
,我想找到一种方法,不使用extra()
。一个选项是使用{{ 1}}但是有更多的Django-ish方法吗?