这是我的SQL查询
all_or_conditions = []
if request.GET.get('filter_phone'):
all_or_conditions.append("phone='"+request.GET.get('filter_phone')+"'")
if request.GET.get('filter_email'):
all_or_conditions.append("email='"+request.GET.get('filter_email')+"'")
if request.GET.get('filter_whatsapp'):
all_or_conditions.append("whatsapp='"+request.GET.get('filter_whatsapp')+"'")
sql_query = "SELECT * FROM app_table WHERE " + " OR ".join(all_or_conditions)
因此,如果只设置了一个电子邮件,
SELECT * FROM app_table WHERE email='[email protected]'
如果电子邮件和Whatspp
SELECT * FROM app_table WHERE email='[email protected]' OR whatsapp='15557776655'
所以问题是,是否有可能使用Django ORM进行这样的查询,而不是通过执行RAW查询
2条答案
按热度按时间htrmnn0y1#
你可以动态地构建一个
Q
对象:请参见Always False Q object。
93ze6v8z2#
可以使用
from django.db.models import Q
您也可以使用
&
代替|
进行and
操作。请在此处阅读文档以了解更多详细信息。