gpt4 book ai didi

mysql - OR 在 django 数据库查询中

转载 作者:行者123 更新时间:2023-11-29 14:25:50 24 4
gpt4 key购买 nike

我有一个具有 3 个 BooleanFields 的模型,我想使用复选框形式来查询数据库。输出应该是表中至少具有 1 个已检查字段的所有条目。现在我有这样的东西:

f=mform.cleaned_data['F']
h=mform.cleaned_data['H']
s=mform.cleaned_data['S']
course_list=[]
course_list=Course.objects.filter(Q(F=f)|Q(H=h)|Q(S=s))

但这显然不起作用,因为它总是返回所有表。基本上我想获取所有这些字段为 True 的类(class)记录。有什么想法吗?

最佳答案

查询:“选择所有类(class)记录,其中(F 为 True OR H 为 True OR S 为 True)”

q_filter = Q()

if mform.cleaned_data['F']:
q_filter |= Q(F=True)
if mform.cleaned_data['H']:
q_filter |= Q(H=True)
if mform.cleaned_data['S']:
q_filter |= Q(S=True)

if q_filter:
course_list = Course.objects.filter(q_filter)
else:
course_list = Course.objects.none()

这是一个非常基本的方法。它可以通过更高级的单行循环来完成,但我想在这里澄清一下。随着时间的推移,你构建了一个 Q 对象。在您的示例中,您正在过滤可能为 True 或 False 的值,而您所说的只是过滤给定字段具有 True 值的记录。

关于mysql - OR 在 django 数据库查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10973010/

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