Django查询没有额外或Raw

时间:2017-07-26 06:15:04

标签: python django django-models django-rest-framework

我想写一个查询,例如

`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方法吗?

0 个答案:

没有答案