Mysql 将sql查询转换为django ORM函数调用

Mysql 将sql查询转换为django ORM函数调用,mysql,django,django-models,Mysql,Django,Django Models,我对将sql查询转换为django ORM函数调用感到困惑,特别是在 转换这行sql 和(演示文稿。教学指南\u文本,如%s或演示文稿。名称,如%s或演示文稿。摘要,如%s或演示文稿。标记,如%s)和 我已经试过了 Presentations.objects.\ filter(deleted=0).\ filter(published=1).\ filt

我对将sql查询转换为django ORM函数调用感到困惑,特别是在 转换这行sql

和(演示文稿。教学指南\u文本,如%s或演示文稿。名称,如%s或演示文稿。摘要,如%s或演示文稿。标记,如%s)和

我已经试过了

Presentations.objects.\
                        filter(deleted=0).\
                        filter(published=1).\
                        filter(academic_only=0).\
                        filter(video_type=1).\
                        filter(synopsis__icontains=search_item_array[i]).\
                        filter(tags__icontains=search_item_array[i]).\
                        filter(teaching_guide_text__icontains=search_item_array[i]).\
                        filter(name__icontains=search_item_array[i]).all()

但它不能正常工作。有人能给我建议一个解决这个问题的方法吗

应用连续的
过滤器
有效地将过滤器与
链接起来。你想要的是。见下文:

from django.db.models import Q
# breaking them out for readability

q1 = Q(synopsis__icontains=search_item_array[i])
q2 = Q(tags__icontains=search_item_array[i])
q3 = Q(teaching_guide_text__icontains=search_item_array[i])
q4 = Q(name__icontains=search_item_array[i])

Presentation.objects.filter(q1|q2|q3|q4).filter(..).filter(..)
过滤器的第一部分针对
q1、q2、q3、q4
执行
,下一批过滤器将是您的传统
s。

可能重复的过滤器