gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:32:02 28 4
gpt4 key购买 nike

我在将 sql 查询转换为 django ORM 函数调用时遇到了困惑,特别是在以下情况下转换这行sql

AND(presentations.teaching_guide_text LIKE %s 或presentation.name LIKE %s 或presentations.synopsis LIKE %s 或presentations.tags LIKE %s )AND

我尝试过这样做,

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()

但它无法正常工作。谁能给我建议一个解决方案来解决这个问题

最佳答案

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

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 执行 OR,下一批过滤器将是传统的 ANDs.

关于mysql - 将sql查询转换为django ORM函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17336293/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com